把从第二个数开始往后每一个数都当成要买的时机,最佳时机就应该从前面找出一个价值最低的点买入,所以用一个变量minv
维护最小值,用res
维护最大值,最终的解就是res
class Solution {
public:
int maxDiff(vector<int>& nums) {
if (nums.empty()) return 0;
int res = 0;
for (int i = 0, minv = nums[0]; i < nums.size(); i ++) {
res = max(res, nums[i] - minv);
minv = min( minv, nums[i]);
}
return res;
}
};