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

相关推荐
Jasmine_llq31 分钟前
《P15800 [GESP202603 六级] 选数》
数据结构·long long·逆序线性 dp·从后往前推导·转移严格遵循题意·防止总和溢出·复杂度on
疯狂打码的少年1 小时前
【数据结构】串(字符串):基本概念与存储
数据结构·笔记
致Great2 小时前
科研人的 AI,不该只回答问题:我用字节TraeWork 跑了一遍真实研究任务
算法
纵有疾風起2 小时前
线性表的定义与基本操作 — 从逻辑结构到 ADT 接口
数据结构·算法·408·线性表·adt
wuyk5553 小时前
1.栈:后进先出的线性数据结构
c语言·数据结构·stm32·单片机
测试_AI_一辰3 小时前
AI Agent 评测最隐蔽的坑-记忆
人工智能·算法·ai·自动化·ai编程
lucas_AI3 小时前
给YOLO检测器插 LoRA,'插对地方'比'插什么'更要命
人工智能·算法
LuminousCPP3 小时前
数据结构-时间与复杂度|时间/空间复杂度 + 两道力扣练习 + 二分查找复盘
c语言·数据结构·经验分享·算法·leetcode
Nil2083 小时前
leetcode 三数之和
数据结构·算法·leetcode
小小龙学IT4 小时前
C++ std::vector 底层实现深度解析:内存布局、扩容策略、移动语义与迭代器失效
开发语言·c++·算法