2020年11月8日学习记录
leetcode刷题记录
122. 买卖股票的最佳时机Ⅱ
**思路:**大体思路是找到最大的升序数组段组,对每一个最大升序数组段做差求和即为结果。
首先进行特殊情况的处理,如果数组的长度为1,则直接返回0。定义两个变量l和r分别指向数组的第一个元素和第二个元素,如果数组[l]大于数组[r],则同时将l和r向右移动一个单位,否则l不动,对r进行处理,利用循环和条件判断将r定位到此升序数组段的右端点。求出当前升序数组段的利润,再令l=r+1,r=r+1,重复上述步骤直到数组末尾。
代码:
class Solution {
public int maxProfit(int[] prices) {
if(prices.length==1)
return 0;
int sum=0,l=0,r=1;
while(r<prices.length){
if(prices[l]>prices[r]){
l++; r++;
}
else{
while(r<prices.length-1&&prices[r]<prices[r+1]) r++;
sum+=prices[r]-prices[l];
l=r+1; r=r+1;
}
}
return sum;
}
}
执行用时:1 ms, 在所有 Java 提交中击败了99.54%的用户
内存消耗:38.4 MB, 在所有 Java 提交中击败了86.32%的用户