【简单】
【Kadane算法】
curMin 记录当前能买到的最低价
profit[i] 记录i时刻能得到的最大利润
profit[i+1] = max{ profit[i] , price[i+1]-curMin } 即i+1时刻的最大利润要么在i时刻得到,要么在i+1时刻得到。(其实,思路感觉和动态规划一样)
class Solution:
def maxProfit(self, prices: List[int]) -> int:
if len(prices)==0:
return(0)
else:
profit=0
curMin=prices[0]
for i in range(1,len(prices)):
profit=max(prices[i]-curMin,profit)
if curMin>prices[i]:
curMin=prices[i]
return(profit)
另一种思路:
由于
p
r
i
c
e
[
i
+
1
]
−
p
r
i
c
e
[
i
−
1
]
=
(
p
r
i
c
e
[
i
]
−
p
r
i
c
e
[
i
−
1
]
)
+
(
p
r
i
c
e
[
i
+
1
]
−
p
r
i
c
e
[
i
]
)
price[i+1]-price[i-1]=(price[i]-price[i-1])+(price[i+1]-price[i])
price[i+1]−price[i−1]=(price[i]−price[i−1])+(price[i+1]−price[i])
所以 profit记录当前的利润
maxprofit记录当前能得到的最大利润
class Solution:
def maxProfit(self, prices: List[int]) -> int:
if len(prices)==0:
return(0)
else:
maxprofit=0
profit=0
for i in range(1,len(prices)):
profit+=prices[i]-prices[i-1]
profit=max(profit,0)
maxprofit=max(profit,maxprofit)
return(maxprofit)