网易首页 > 网易号 > 正文 申请入驻

2026-08-01:最小稳定下标Ⅰ。用go语言,给定一个长度为 n 的整数数组 nums 和一个整数 k。对于数组中的每个位置 i,先找出从数组开头到

0
分享至

2026-08-01:最小稳定下标Ⅰ。用go语言,给定一个长度为 n 的整数数组 nums 和一个整数 k。对于数组中的每个位置 i,先找出从数组开头到位置 i 这段区间内的最大值,再找出从位置 i 到数组末尾这段区间内的最小值,用前者减去后者,得到该位置的一个差值。如果这个差值不超过 k,就认为这个位置是符合条件的。现在需要在这些符合条件的位置中,找到下标最小的那一个;如果没有任何一个位置符合条件,则返回 -1。

1 <= nums.length <= 100。

0 <= nums[i] <= 1000000000。

0 <= k <= 1000000000。

输入: 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。

题目来自力扣3903。

根据给定的代码和题目要求,下面分步骤详细说明整个求解过程,最后给出时间和空间复杂度。

算法处理步骤

  1. 1.输入数据
    给定一个整数数组nums(长度记为n,且n >= 1)和一个整数k

  2. 2.预处理:计算后缀最小值数组

  • • 创建一个长度为n的数组sufMin,用于存储从每个位置i到数组末尾这段区间内的最小值。

  • • 首先将最后一个位置n-1的后缀最小值设为nums[n-1](因为区间只包含自身)。

  • • 然后从倒数第二个位置n-2开始,依次向前遍历:
    对于每个i,比较nums[i]和已经计算出的sufMin[i+1],取其中的较小值赋给sufMin[i]
    这样,sufMin[i]就表示nums[i]nums[n-1]这段范围内的最小值。

3.从左到右遍历并计算不稳定值

  • • 初始化一个变量preMax为 0(因为题目保证nums[i] >= 0,所以初始值 0 不会影响后续最大值更新;若nums[0]也为 0,则取最大值后仍为 0,若大于 0 则会被更新)。

  • • 按顺序遍历数组下标i从 0 到n-1

    • • 更新preMax:将当前元素nums[i]与当前的preMax比较,取较大者作为新的preMax。此时preMax就代表了从数组开头到当前位置i这段区间内的最大值。

    • • 取出已经准备好的sufMin[i],它代表从当前位置i到数组末尾这段区间内的最小值。

    • • 计算不稳定值:差值 = preMax - sufMin[i]

    • • 判断该差值是否小于等于k
      若是,则当前下标i就是第一个(也是最小的)符合条件的稳定下标,立即返回i

4.结束遍历
如果遍历完整个数组都没有找到任何一个差值<= k的下标,则说明不存在稳定下标,返回-1

示例推演(以nums = [5,0,1,4]k=3为例)

  • • 计算后缀最小值:

    • sufMin[3] = 4

    • sufMin[2] = min(1, 4) = 1

    • sufMin[1] = min(0, 1) = 0

    • sufMin[0] = min(5, 0) = 0

  • • 遍历过程:

    • i=0preMax = max(0,5)=5,差值 =5 - sufMin[0](0) = 5,>3,不满足。

    • i=1preMax = max(5,0)=5,差值 =5 - sufMin[1](0) = 5,>3,不满足。

    • i=2preMax = max(5,1)=5,差值 =5 - sufMin[2](1) = 4,>3,不满足。

    • i=3preMax = max(5,4)=5,差值 =5 - sufMin[3](4) = 1,≤3,满足,返回3

复杂度分析
  • 时间复杂度
    预处理后缀最小值需要一次从右向左的遍历,时间复杂度为 O(n);
    从左向右的遍历也需要一次,时间复杂度为 O(n)。
    总时间复杂度为O(n)

  • 额外空间复杂度
    主要开销是存储后缀最小值数组sufMin,长度为 n,占用 O(n) 空间;
    其他变量(如preMax)均占用常数空间。
    总额外空间复杂度为O(n)

最终答案:当nums = [5,0,1,4]k=3时,返回3;复杂度为 O(n) 时间,O(n) 空间。

Go完整代码如下:

package main

import "fmt"

func firstStableIndex(nums []int, k int) int {
n := len(nums)
sufMin := make([]int, n) // 后缀最小值
sufMin[n-1] = nums[n-1]
for i := n - 2; i >= 0; i-- {
sufMin[i] = min(sufMin[i+1], nums[i])
}

preMax := 0 // 前缀最大值
for i, x := range nums {
preMax = max(preMax, x)
if preMax-sufMin[i] <= k {
return i
}
}
return -1
}

func main() {
nums := []int{5, 0, 1, 4}
k := 3
result := firstStableIndex(nums, k)
fmt.Println(result)
}

Python完整代码如下:

# -*-coding:utf-8-*-

def first_stable_index(nums, k):
n = len(nums)
# 计算后缀最小值
suf_min = [0] * n
suf_min[-1] = nums[-1]
for i in range(n - 2, -1, -1):
suf_min[i] = min(suf_min[i + 1], nums[i])

pre_max = 0 # 注意:与原 Go 代码保持一致,初始化为 0
for i, x in enumerate(nums):
pre_max = max(pre_max, x)
if pre_max - suf_min[i] <= k:
return i
return -1

if __name__ == "__main__":
nums = [5, 0, 1, 4]
k = 3
result = first_stable_index(nums, k)
print(result)

C++完整代码如下:

  




using namespace std;

int firstStableIndex(vector& nums, int k) {
int n = nums.size();
if (n == 0) return -1;

// 后缀最小值数组
vector sufMin(n);
sufMin[n - 1] = nums[n - 1];
for (int i = n - 2; i >= 0; --i) {
sufMin[i] = min(sufMin[i + 1], nums[i]);
}

int preMax = 0;
for (int i = 0; i < n; ++i) {
preMax = max(preMax, nums[i]);
if (preMax - sufMin[i] <= k) {
return i;
}
}
return -1;
}

int main() {
vector nums = {5, 0, 1, 4};
int k = 3;
int result = firstStableIndex(nums, k);
cout << result << endl;
return 0;
}

我们相信人工智能为普通人提供了一种“增强工具”,并致力于分享全方位的AI知识。在这里,您可以找到最新的AI科普文章、工具评测、提升效率的秘籍以及行业洞察。 欢迎关注“福大大架构师每日一题”,发消息可获得面试资料,让AI助力您的未来发展。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
黄一鸣自曝:王思聪每次约她,车费都给10万,来给5万,回再给5万

黄一鸣自曝:王思聪每次约她,车费都给10万,来给5万,回再给5万

汉史趣闻
2025-06-24 10:07:59
63岁关之琳牵手27岁男友:那个“什么男人都试过”的女人,终于活成了自己的豪门

63岁关之琳牵手27岁男友:那个“什么男人都试过”的女人,终于活成了自己的豪门

潘幸知
2026-08-07 09:41:47
高中生被同学雇凶打死仅赔3000,父亲出家两年携11枚炸弹挨个拜年

高中生被同学雇凶打死仅赔3000,父亲出家两年携11枚炸弹挨个拜年

易玄
2026-08-01 22:37:36
暑期档最“扑”的剧出现了?S+级降到A级,连《九门》都没打过

暑期档最“扑”的剧出现了?S+级降到A级,连《九门》都没打过

楚楚号
2026-08-07 06:29:09
逆转皇马!巴萨说服罗德里内幕曝光:德科密谈 弗里克多次打电话

逆转皇马!巴萨说服罗德里内幕曝光:德科密谈 弗里克多次打电话

念洲
2026-08-08 06:26:51
陈中华:公务员应带头为人民服务,而不是带头带薪休假享乐

陈中华:公务员应带头为人民服务,而不是带头带薪休假享乐

解说阿洎
2026-08-07 17:28:15
比亚迪纯电K-Car卖爆,震惊日本全网!日本网民气得咬牙切齿,边骂边抢购,产品力逆天,用钱包投票!

比亚迪纯电K-Car卖爆,震惊日本全网!日本网民气得咬牙切齿,边骂边抢购,产品力逆天,用钱包投票!

世事视点
2026-08-05 21:28:34
唐明杰现状:官司扎堆,单方面宣称销毁胚胎却拿不出完整凭证

唐明杰现状:官司扎堆,单方面宣称销毁胚胎却拿不出完整凭证

石辰搞笑日常
2026-08-07 14:01:49
突发!湖北前首富被抓,真正的清算开始了

突发!湖北前首富被抓,真正的清算开始了

销售与管理
2026-08-07 17:48:13
湖人随队记者爆料:布朗尼・詹姆斯存在常规赛开赛前被裁的可能性

湖人随队记者爆料:布朗尼・詹姆斯存在常规赛开赛前被裁的可能性

夜白侃球
2026-08-07 11:09:14
东德能合并,蒙古不能归?蒙古回归中国,到底存在哪些现实困境?

东德能合并,蒙古不能归?蒙古回归中国,到底存在哪些现实困境?

风流女汉
2026-07-03 12:27:09
每体:巴萨与罗德里谈妥4年合同,巴萨认为曼城会接受6500万欧报价

每体:巴萨与罗德里谈妥4年合同,巴萨认为曼城会接受6500万欧报价

懂球帝
2026-08-08 03:15:08
54岁中年母亲:儿子好不容易成家立业,可亲家母竟差使起了我老公

54岁中年母亲:儿子好不容易成家立业,可亲家母竟差使起了我老公

秀秀情感课堂
2026-08-07 15:10:08
北大教授张维迎:真正发达的国家,会不计成本地做出三重付出

北大教授张维迎:真正发达的国家,会不计成本地做出三重付出

锅锅爱历史
2026-07-28 04:28:07
留学生翟云瑶被驱逐回中国:“只欺负中国人”的女魔头,回国改名

留学生翟云瑶被驱逐回中国:“只欺负中国人”的女魔头,回国改名

西楼知趣杂谈
2026-08-08 06:09:42
好莱坞著名男演员,涉嫌多起性侵

好莱坞著名男演员,涉嫌多起性侵

中国新闻周刊
2026-08-05 11:24:51
甘比万万没想到,伺候了刘銮雄10年,最后吕丽君却成了人生赢家

甘比万万没想到,伺候了刘銮雄10年,最后吕丽君却成了人生赢家

星娱叨叨社
2026-07-10 14:20:55
34年前美国曾做过一个实验,把4男4女关在一起两年,结果如何?

34年前美国曾做过一个实验,把4男4女关在一起两年,结果如何?

莫地方
2026-08-06 22:37:35
台风“白海豚”体型变大!环流面积接近13个浙江那么大

台风“白海豚”体型变大!环流面积接近13个浙江那么大

上游新闻
2026-08-07 10:27:04
非必要不做肠镜?医生:只要做过肠镜,患者一定多加关注这4点!

非必要不做肠镜?医生:只要做过肠镜,患者一定多加关注这4点!

芹姐说生活
2026-07-09 23:13:04
2026-08-08 07:15:00
moonfdd incentive-icons
moonfdd
福大大架构师每日一题
1380文章数 78关注度
往期回顾 全部

科技要闻

突然涨价,"只收电费钱"的梁文锋,变了吗

头条要闻

2岁患儿就诊死亡首诊医生获刑 不少医生为其鸣不平

头条要闻

2岁患儿就诊死亡首诊医生获刑 不少医生为其鸣不平

体育要闻

去年信誓旦旦3000万 今年NBA查无此人

娱乐要闻

周也热恋结束,六个字暴露单身状态

财经要闻

腾讯WorkBuddy领跑AI办公 阿里字节急了?

汽车要闻

越7全球首秀 传祺开始进攻方盒子越野

态度原创

时尚
亲子
房产
本地
公开课

从帆布袋到爱马仕,她们最爱的新包是这些

亲子要闻

现在两个宝宝每天就知道“抢妈妈”

房产要闻

单日狂卖35亿!两大央企重仓,三亚土拍又爆了!

本地新闻

课本里的童年,绍兴正上演

公开课

李玫瑾:为什么性格比能力更重要?

无障碍浏览 进入关怀版