思路
维护一个min值,表示遍历到第i个数字的时候,前i-1个数字中最小的数字
这时候就能计算出到这个数字的时候卖出得到的利益,并不断维护这个maxDiff
C++ 代码
class Solution {
public:
int maxDiff(vector<int>& nums) {
if (nums.empty() || nums.size() < 2)
return 0;
int min = nums[0];
int max_diff = nums[1] - min;
for (int i = 2; i < nums.size(); i++) {
if (nums[i-1] < min)
min = nums[i-1];
int cur_max_diff = nums[i] - min;
if (cur_max_diff > max_diff)
max_diff = cur_max_diff;
}
//如果最大收益小于0,那就选择”不买卖“,收益为0
return (max_diff<0?0:max_diff);
}
};