题目地址
解题思路
我们可以对数组进行遍历,但是遍历是从数组第二个元素(下标为1)开始,初始化res
为INT_MIN
,初始化前者pre
为nums[0]
;然后对于每一个nums[j]
,我们判断此时nums[j]
是否大于pre
;
- 如果
nums[j]>pre
: 我们计算nums[j]-pre
,并取其值与res
的较大值,将其赋值给res
; - 如果
nums[j]<pre
: 我们重置pre
为当前的nums[j]
;
最后return res==INT_MIN ? -1 : res;
代码实现(C++)
class Solution {
public:
int maximumDifference(vector<int>& nums)
{
int pre=nums[0];
int res=INT_MIN;
for(int i=1;i!=nums.size();i++)
{
if(nums[i]>pre)
{
res=max(res,nums[i]-pre);
}
if(nums[i]<pre)
{
pre=nums[i];
}
}
return res==INT_MIN ? -1 : res;
}
};