摘要:?jiǎn)栴}本質(zhì)本質(zhì)動(dòng)態(tài)規(guī)劃問(wèn)題。局部最優(yōu),全局最優(yōu)。乘法問(wèn)題,存在的情況是負(fù)數(shù)或者正數(shù),或者從當(dāng)前數(shù)開(kāi)始新的連續(xù)元素相乘可能發(fā)生的情況在某個(gè)節(jié)點(diǎn),繼續(xù)之前的增大減小,從此節(jié)點(diǎn)轉(zhuǎn)折。所以只要在局部動(dòng)態(tài)中,保持最大最小當(dāng)前,進(jìn)行判斷保留即可。
Given an integer array nums, find the contiguous subarray within an array (containing at least one number) which has the largest product.
Example 1:
Input: [2,3,-2,4]
Output: 6
Explanation: [2,3] has the largest product 6.
Example 2:
Input: [-2,0,-1]
Output: 0
Explanation: The result cannot be 2, because [-2,-1] is not a subarray.
問(wèn)題本質(zhì):
本質(zhì):動(dòng)態(tài)規(guī)劃問(wèn)題。 局部最優(yōu),全局最優(yōu)。 product-乘法問(wèn)題,存在的情況是 負(fù)數(shù)或者正數(shù),或者從當(dāng)前數(shù)開(kāi)始新的連續(xù)元素相乘 可能發(fā)生的情況: 在某個(gè)節(jié)點(diǎn),繼續(xù)之前的增大/減小,從此節(jié)點(diǎn)轉(zhuǎn)折。 所以只要在局部動(dòng)態(tài)中,保持最大/最小/當(dāng)前,進(jìn)行判斷保留即可。
應(yīng)用:挖掘問(wèn)題的本質(zhì),將問(wèn)題抽象化, 局部:之前的值和當(dāng)前值是同鄉(xiāng)還是異向的問(wèn)題,同向則被覆蓋,異向則被保留。如此迭代。
class Solution: def maxProduct(self, nums): """ :type nums: List[int] :rtype: int """ final_max=max_num=min_num=nums[0] for num_cur in nums[1:]: # min_num=min(num_cur*min_num,num_cur) max_num_tmp=max(num_cur*min_num,num_cur*max_num) min_num=min(num_cur*min_num,num_cur*max_num,num_cur) max_num=max(max_num_tmp,num_cur) final_max=max(max_num,final_max) return final_max if __name__=="__main__": st=Solution() num=[2,3,-2,-5,4,-5,8] # num=[-2,0,-1] # num=[2,3,-2,4] num=[-1,-2,-9,-6] out=st.maxProduct(num) print(out)
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/42256.html
摘要:復(fù)雜度思路要保留一個(gè)到某一位來(lái)看的最大值和最小值。因?yàn)樵跀?shù)組中有負(fù)數(shù)的出現(xiàn),所以到這一位為止的能得到的最大值,可能是由之前的最大值和這個(gè)數(shù)相乘得到,也可能是最小值和這個(gè)數(shù)相乘得到的。 Leetcode[152] Maximum Product Subarray Find the contiguous subarray within an array (containing at le...
摘要:題目要求從一個(gè)整數(shù)數(shù)組中找到一個(gè)子數(shù)組,該子數(shù)組中的所有元素的乘積最大。比如數(shù)組的最大乘積子數(shù)組為思路與代碼這題目考察了動(dòng)態(tài)編程的思想。至于為什么還要比較,是因?yàn)槿绻且粋€(gè)負(fù)數(shù)的,那么之前的最小乘積在這里可能就成為了最大的乘積了。 題目要求 Find the contiguous subarray within an array (containing at least one num...
摘要:這是一道簡(jiǎn)單的動(dòng)規(guī)題目,同步更新數(shù)組解決了為負(fù)數(shù)的問(wèn)題。即使是求最小乘積子序列,也可以通過(guò)取和的最小值獲得。 Problem Find the contiguous subarray within an array (containing at least one number) which has the largest product. Example For example, g...
摘要:前言從開(kāi)始寫(xiě)相關(guān)的博客到現(xiàn)在也蠻多篇了。而且當(dāng)時(shí)也沒(méi)有按順序?qū)懍F(xiàn)在翻起來(lái)覺(jué)得蠻亂的。可能大家看著也非常不方便。所以在這里做個(gè)索引嘻嘻。順序整理更新更新更新更新更新更新更新更新更新更新更新更新更新更新更新更新 前言 從開(kāi)始寫(xiě)leetcode相關(guān)的博客到現(xiàn)在也蠻多篇了。而且當(dāng)時(shí)也沒(méi)有按順序?qū)憽F(xiàn)在翻起來(lái)覺(jué)得蠻亂的。可能大家看著也非常不方便。所以在這里做個(gè)索引嘻嘻。 順序整理 1~50 1...
摘要:在線(xiàn)網(wǎng)站地址我的微信公眾號(hào)完整題目列表從年月日起,每天更新一題,順序從易到難,目前已更新個(gè)題。這是項(xiàng)目地址歡迎一起交流學(xué)習(xí)。 這篇文章記錄我練習(xí)的 LeetCode 題目,語(yǔ)言 JavaScript。 在線(xiàn)網(wǎng)站:https://cattle.w3fun.com GitHub 地址:https://github.com/swpuLeo/ca...我的微信公眾號(hào): showImg(htt...
閱讀 2064·2021-09-22 15:43
閱讀 8623·2021-09-22 15:07
閱讀 1078·2021-09-03 10:28
閱讀 2052·2021-08-19 10:57
閱讀 1061·2020-01-08 12:18
閱讀 2972·2019-08-29 15:09
閱讀 1521·2019-08-29 14:05
閱讀 1640·2019-08-29 13:57