题目描述
解题思路
因为利润最大化时,一定是一个数最大,另一个是在这个最大数前方的最小数。
局部最优解: 每轮遍历都取当前可得到的最大利润。
全局最优解: 找到整体的最大利润。
因此,维持两个变量,一个变量res
用来记录结果,一个变量minv
用来记录在遍历到i时,前i-1个变量中的最小值。
class Solution {
public:
int maxDiff(vector<int>& nums) {
if(nums.empty()) return 0;
int res = 0, minv = nums[0];
for(int i = 1; i < nums.size(); i++) {
res = max(res, nums[i] - minv);
minv = min(minv, nums[i]);
}
return res;
}
};