day15笔记
1.题目描述
2.代码构思(debug)
class Solution:
def maxProfit(self, prices: List[int]) -> int:
if not prices:
return
num = prices[0]
maxprofit = -99999
for item in prices[1:]:
maxprofit = max(maxprofit,item-num)
num = min(num,item)
return maxprofit if maxprofit >= 0 else 0
买卖股票的最佳时机II
由于股票的购买没有限制,因此整个问题等价于寻找 xx 个不相交的区间
使得如下的等式最大化
这若干个区间长度为 1 的区间的价值和,即
因此问题可以简化为找 x 个长度为 1 的区间
贪心的角度考虑我们每次选择贡献大于 0的区间即能使得答案最大化,因此最后答案为
需要说明的是,贪心算法只能用于计算最大利润,计算的过程并不是实际的交易过程。
考虑题目中的例子 [1,2,3,4,5],数组的长度 n=5,由于对所有的 1 \le i < n1≤i<n 都有 a[i]>a[i-1]a[i]>a[i−1],因此答案为
但是实际的交易过程并不是进行 4次买入和 4次卖出,而是在第 1天买入,第 5天卖出。
class Solution:
def maxProfit(self, prices: List[int]) -> int:
if not prices:
return
temp = 0
len1 = len(prices)
for i in range(1,len1):
if prices[i-1] < prices[i]:
temp += prices[i] - prices[i-1]
return temp