2016. 增量元素之間的最大差值
給你一個下標從 0 開始的整數數組 nums ,該數組的大小為 n ,請你計算 nums[j] - nums[i] 能求得的 最大差值 ,其中 0 <= i < j < n 且 nums[i] < nums[j] 。
返回 最大差值 。如果不存在滿足要求的 i 和 j ,返回 -1 。
示例 1:輸入:nums = [7,1,5,4]
輸出:4
解釋:
最大差值出現在 i = 1 且 j = 2 時,nums[j] - nums[i] = 5 - 1 = 4 。
注意,盡管 i = 1 且 j = 0 時 ,nums[j] - nums[i] = 7 - 1 = 6 > 4 ,但 i > j 不滿足題面要求,所以 6 不是有效的答案。示例 2:輸入:nums = [9,4,3,2]
輸出:-1
解釋:
不存在同時滿足 i < j 和 nums[i] < nums[j] 這兩個條件的 i, j 組合。示例 3:輸入:nums = [1,5,2,10]
輸出:9
解釋:
最大差值出現在 i = 0 且 j = 3 時,nums[j] - nums[i] = 10 - 1 = 9 。
解題思路
使用變量m維護,當前下標i之前,數組曾經出現的最小值,如果當前遍歷的值大于m,則計算出二者的差值,在所有的差值里面找出最大差值。
代碼
class Solution {
public:int maximumDifference(vector<int> &nums) {int m = nums[0], res = -1;for (int i = 1; i < nums.size(); ++i) {if (nums[i] > m)res = max(res,nums[i] - m);elsem = min(nums[i], m);}return res;}
};