leetcode 3903. 最小稳定下标 I 简单

给你一个长度为 n 的整数数组 nums 和一个整数 k。

对于每个下标 i,定义它的 不稳定值 为 max(nums[0..i - 1]) - min(nums[i..n - 1])。

换句话说:

  • max(nums[0..i - 1]) 表示从下标 0 到下标 i - 1 的元素中的最大值 。
  • min(nums[i..n - 1]) 表示从下标 i 到下标 n - 1 的元素中的 最小值。

如果某个下标 i 的不稳定值小于等于 k,则称该下标为 稳定下标 。

返回 最小 的稳定下标。如果不存在这样的下标,则返回 -1。

示例 1:

输入: nums = 5,0,1,4, k = 3

输出: 3

解释:

  • 在下标 0 处:[5] 中的最大值是 5,[5, 0, 1, 4] 中的最小值是 0,因此不稳定值为 5 - 0 = 5。
  • 在下标 1 处:[5, 0] 中的最大值是 5,[0, 1, 4] 中的最小值是 0,因此不稳定值为 5 - 0 = 5。
  • 在下标 2 处:[5, 0, 1] 中的最大值是 5,[1, 4] 中的最小值是 1,因此不稳定值为 5 - 1 = 4。
  • 在下标 3 处:[5, 0, 1, 4] 中的最大值是 5,[4] 中的最小值是 4,因此不稳定值为 5 - 4 = 1。
  • 这是第一个不稳定值小于等于 k = 3 的下标,因此答案是 3。

示例 2:

输入: nums = 3,2,1, k = 1

输出: -1

解释:

  • 在下标 0 处,不稳定值为 3 - 1 = 2。
  • 在下标 1 处,不稳定值为 3 - 1 = 2。
  • 在下标 2 处,不稳定值为 3 - 1 = 2。
  • 这些值都不小于等于 k = 1,因此答案是 -1。

示例 3:

输入: nums = 0, k = 0

输出: 0

解释:

在下标 0 处,不稳定值为 0 - 0 = 0,它小于等于 k = 0。因此答案是 0。

提示:

  • 1 <= nums.length <= 100
  • 0 <= nums[i] <= 10^9
  • 0 <= k <= 10^9

分析:先分别求出最大值和最小值数组,再从小到大遍历所有下标,检查是否存在一个下标的不稳定值小于等于 k 即可。

cpp 复制代码
int firstStableIndex(int* nums, int numsSize, int k) {
    int cnt_max[numsSize],cnt_min[numsSize];
    for(int i=0,j=numsSize-1;i<numsSize;++i,--j)
    {
        if(i==0)cnt_max[i]=nums[i],cnt_min[j]=nums[j];
        else cnt_max[i]=fmax(cnt_max[i-1],nums[i]),cnt_min[j]=fmin(cnt_min[j+1],nums[j]);
    }
    for(int i=0;i<numsSize;++i)
        if(cnt_max[i]-cnt_min[i]<=k)return i;
    return -1;
}
相关推荐
旖旎夜光3 天前
力控面试题 01.01: 判定字符是否唯一(位运算) —— 题解
c++·学习·算法·leetcode·力控
CoderYanger3 天前
A.每日一题:835. 图像重叠
java·开发语言·程序人生·leetcode·面试·职场和发展·学习方法
圣保罗的大教堂3 天前
leetcode 3524. 求出数组的 X 值 I 中等
leetcode
Tim_103 天前
【LeetCode】338、比特位计数
c++·算法·leetcode
mmmmath_33 天前
LeetCode.028.找出字符串中第一个匹配项的
数据结构·算法·leetcode
Navigator_Z3 天前
LeetCode //C - 1255. Maximum Score Words Formed by Letters
c语言·算法·leetcode
All for pursuit.3 天前
【栈-4】739.每日温度
数据结构·c++·算法·leetcode
开开心心就好3 天前
安卓手写文字生成工具,多种纸张一直免费
网络·网络协议·tcp/ip·leetcode·智能手机·电脑·模拟退火算法
All for pursuit.3 天前
【栈-5】84.柱状图中最大的矩形
数据结构·c++·算法·leetcode
圣保罗的大教堂3 天前
leetcode 1665. 完成所有任务的最少初始能量 中等
leetcode