先找到第一个波谷,如果比已知波谷还小则更新最小波谷。再找接邻的波峰,如果波峰值减最小波谷值大于已知最大差值则更新。依次处理剩下的波峰及波谷即可。
-
class Solution {
-
public:
-
int maxProfit(vector<int> &prices) {
-
if(prices.size()<2) return 0;
-
int min=0x7fffffff;
-
int re=0;
-
int j=0;
-
while(j<prices.size()-1)
-
{
-
while(j<prices.size()-1&&prices[j]>=prices[j+1]) j++;
-
if(prices[j]<min) min=prices[j];
-
while(j<prices.size()-1&&prices[j]<prices[j+1]) j++;
-
if(prices[j]-min>re) re=prices[j]-min;
-
}
-
return re;
-
}
-
};
阅读(121) | 评论(0) | 转发(0) |