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)。

相关推荐
怪兽学LLM20 分钟前
LeetCode 438 找到字符串中所有字母异位词(Python 固定滑动窗口+字符计数解法)
python·算法·leetcode
满怀冰雪25 分钟前
第04篇-双指针算法-从有序数组到回文判断的高频解法
java·算法
CC数学建模25 分钟前
2026年江西省研究生数学建模竞赛1题:空间数据分析中的过拟合识别完整思路、代码、模型、文章,全网首发高质量分享!
python·算法·数学建模
leo__52033 分钟前
MATLAB实现牧羊人算法
开发语言·算法·matlab
Gauss松鼠会39 分钟前
【GaussDB】GaussDB SMP特性调优详解
java·服务器·前端·数据库·sql·算法·gaussdb
Tisfy44 分钟前
LeetCode 3689.最大子数组总值 I:What The Medium
算法·leetcode·题解·贪心·模拟·脑筋急转弯
葬送的代码人生44 分钟前
JavaScript 数组完全指南:从入门到实战
前端·javascript·算法
春日见1 小时前
决策规划控制面经汇总
人工智能·深度学习·算法·机器学习·自动驾驶
Full Stack Developme1 小时前
Java DFA算法
java·python·算法
fie88891 小时前
LBP + HOG 特征检测与识别 MATLAB 实现
数据结构·算法·matlab