链接
思路
完全没有思路。直接看讲解,结果不是我想的那么复杂啊,画个图很清晰明了。看来以后可以画个图之类的,更方便理解。
c
int maxProfit(int* prices, int pricesSize){
int sum = 0;
int i;
if(pricesSize == 0)
{
return 0;
}
int max = prices[0];
int min = prices[0];
for(i = 0; i < pricesSize; i++)
{
if(prices[i] >= max)
{
max = prices[i];
}
else
{
sum += max - min;
min = prices[i];
max = prices[i];
}
}
if(max == prices[pricesSize - 1])
{
sum += max - min;
}
return sum;
}
python
其实只要后面比前面的大,就可以。所以不用那么麻烦。一个一个的增量相加即可。
class Solution:
def maxProfit(self, prices: List[int]) -> int:
sum_ = 0
for i in range(1, len(prices)):
if prices[i] > prices[i - 1]:
sum_ += prices[i] - prices[i - 1]
return sum_