LeetCode 2016.增量元素之间的最大差值

给你一个下标从 0 开始的整数数组 nums ,该数组的大小为 n ,请你计算 numsj - numsi 能求得的 最大差值 ,其中 0 <= i < j < n 且 numsi < numsj 。

返回 最大差值 。如果不存在满足要求的 i 和 j ,返回 -1 。

示例 1:

输入:nums = 7,1,5,4

输出:4

解释:

最大差值出现在 i = 1 且 j = 2 时,numsj - numsi = 5 - 1 = 4 。

注意,尽管 i = 1 且 j = 0 时 ,numsj - numsi = 7 - 1 = 6 > 4 ,但 i > j 不满足题面要求,所以 6 不是有效的答案。

示例 2:

输入:nums = 9,4,3,2

输出:-1

解释:

不存在同时满足 i < j 和 numsi < numsj 这两个条件的 i, j 组合。

示例 3:

输入:nums = 1,5,2,10

输出:9

解释:

最大差值出现在 i = 0 且 j = 3 时,numsj - numsi = 10 - 1 = 9 。

提示:

n == nums.length

2 <= n <= 1000

1 <= numsi <= 109^99

遍历nums,记录下之前所有元素的最小值,找到当前值与之前最小值之间差的最大值:

cpp 复制代码
class Solution {
public:
    int maximumDifference(vector<int>& nums) {
        int ans = -1;
        int minNum = 1e9;
        for (int i : nums) {
            ans = max(i - minNum, ans);
            minNum = min(minNum, i);
        }

        return ans <= 0 ? -1 : ans;
    }
};

如果nums的长度为n,则此算法时间复杂度为O(n),空间复杂度为O(1)。

相关推荐
秋天的怀念_David1 小时前
算法一千零一夜 · 作品相关:版权与致谢声明
程序人生·算法·学习方法
图灵-M1 小时前
【数据结构】静态 & 动态顺序表
c语言·数据结构·笔记
揽星河..1 小时前
【C语言】数组
c语言·开发语言·算法
careathers1 小时前
【数据结构】基于比较的排序算法 - 选择排序
数据结构·算法·排序算法
听风若依2 小时前
C++模板初阶
c++·算法
纪念 2292 小时前
C++ 算法(模拟)
开发语言·c++·算法
揽星河..2 小时前
【C语言】函数
c语言·算法
zwc32104320552 小时前
Day 2:图像内存、数据类型与stride
c++·人工智能·opencv·算法·计算机视觉
重生之小比特3 小时前
【算法拾光】模拟|提莫攻击 + N 字形变换
算法·模拟
XiYang-DING3 小时前
P4104.环形链表判断
数据结构·链表