解题思路
数组题无非就是双下标
1、未持有,价格下降中断则买入
2、持有,价格上涨中断则卖出
最后一天只卖不买(最后一天的处理感觉代码逻辑冗余,可以尝试更换思路解决最后一天 )
代码
class Solution {
public int maxProfit(int[] prices) {
int curr=-1;
int money=0;
boolean flag=false; // false未持有 , true持有
for (int i = 0; i < prices.length-1; i++) {
if(flag) {
if(prices[i]>prices[i+1]) { //卖出, 如何保证在最后一天卖出?
money+=prices[i]-curr;
flag=false;
}
}else {
if(prices[i]<prices[i+1]) { //买入
curr = prices[i];
flag = true;
}
}
if(i==prices.length-2 && flag) {
if(prices[i+1]>curr) { //卖出, 如何保证在最后一天卖出?
money+=prices[i+1]-curr;
flag=false;
curr=-1;
}
}
}
return money;
}
}