买卖股票的最佳时机II
我的思路:
说实话,这个我虽然想了半天,但还是在实现的时候出现了障碍,总之还是逻辑上的问题。
看完大佬的思路,我的思路:
做什么事只关注眼前利益,从第一天开始(忽略第0天)。如果今天的利润减去昨天的利润为正,那么昨天就买入,
然后今天卖出(这样就防止亏本),并把利润差统计出来;到明天的时候再进行这样的判断,进行循环操作,直到
最后一天。并不需要给顶什么标志,再循环比较(我的思路就是这样!)。
我的代码:
from typing import List
def maxProfit(prices: List[int]) -> int:
i = 1
maxp = 0
while i < len(prices):
if prices[i-1]<prices[i]:
sum = prices[i] - prices[i - 1]
if sum > 0:
maxp = maxp + sum
i += 1
return maxp
大佬的代码:
def maxProfit(self, prices: List[int]) -> int:
profit = 0
for i in range(1, len(prices)):
if prices[i] > prices[i - 1]:
profit += (prices[i] - prices[i - 1])
return profit
我对大佬代码的理解:
还是从第一天开始的(忽略第0天),如果今天利润大于昨天的利润,就把利润差累加给总利润。真是简单!
循环时使用range,这样都不用给变量加1了,直接创建一个列表,然后通过in循环列表,传统中还需要递加
变量。在这儿还需要关注循环的次数,也即是range的特征。666
我真菜!!!
range
就是创建个数列表,可以控制数的范围,还可以限定步长。以后再循环中可以当作循环条件。
注意
range(1,10)
[1,2,3,4,5,6,7,8,9]