这个题的话我是试着自己去写的,买入一定要卖出,比如 7,1,5,6,7,3,4 在1的时候买入,后面[5,6,7] 那么选择在7的时候卖出最划算,接下来3的时候买入,4 的时候卖出就可以了
7,6,4,3,1 那么像这种情况下,是一直不买入的,故而最后得到的是0,需要注意这里是不会有买入但是不卖出的情况,因为有买入就以为着前小后大可以卖出,一定会是对应关系。
class Solution { public: int maxProfit(vector<int>& prices) { //买入为0 卖出为1 //i比i+1小并且在等待买入,则买入 否则卖出 //买入 int sum=0,flag=0,tmp=0; for(int i=0;i<prices.size()-1;){ if(prices[i]<prices[i+1]){ //买入 sum-=prices[i]; i++; //卖出 while(i<prices.size()-1&&prices[i]<prices[i+1]) i++; sum+=prices[i]; }else{ i++; } } return sum; } };