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

2026-08-10:使数组非递减需要的最小累计值。用go语言,有一个长度为 n 的整数数组。你可以多次执行下面的操作: - 选择任意一个连续非空

0
分享至

2026-08-10:使数组非递减需要的最小累计值。用go语言,有一个长度为 n 的整数数组。你可以多次执行下面的操作:

  • • 选择任意一个连续非空子数组,以及任意一个正整数 x。

  • • 将该子数组里的每个数都加上 x。

你的目标是通过一系列这样的操作,让整个数组变得“非递减”,也就是从左到右每个数都 ≤ 后一个数。

每次操作都会消耗一个 x(就是你这次加上的那个正整数),所有操作消耗的 x 加起来,就是总代价。请你计算并返回在所有能让数组变成非递减的操作方案中,这个总代价的最小可能值。

1 <= n == nums.length <= 100000。

1 <= nums[i] <= 1000000000。

输入: nums = [3,3,2,1]。

输出: 2。

解释:

一种最优操作方案为:

选择子数组 [2..3],并增加 x = 1,得到 [3, 3, 3, 2]

选择子数组 [3..3],并增加 x = 1,得到 [3, 3, 3, 3]

数组变为非递减,所选 x 的总和为 1 + 1 = 2。

题目来自力扣3914。

详细执行步骤

  1. 1.初始化总代价
    用一个变量(例如ans)记录累计的 x 总和,初始值为 0。

  2. 2.遍历数组,寻找下降点
    从第二个元素开始(索引i = 1)向右扫描到最后一个元素,依次检查相邻元素nums[i-1]nums[i]的关系。

  3. 3.计算当前相邻差
    对于每一对相邻元素,计算diff = nums[i-1] - nums[i]

  • • 如果diff > 0,说明出现下降(前一个数大于后一个数),必须通过操作将nums[i]及其后面的部分至少增加diff才能让nums[i]不小于nums[i-1]。这是不可回避的最小代价。

  • • 如果diff <= 0,说明已经满足非递减,不需要任何操作,代价为 0。

4.累加必须的代价
diff > 0,则将diff累加到总代价ans中;否则加 0(相当于跳过)。

5.逻辑上“修改”数组(无需实际修改)
虽然代码中没有真的修改数组,但可以想象:当我们决定付出diff的代价后,相当于把从i开始到数组末尾的所有元素都增加了diff。这样一来,对于后续的所有相邻对,由于它们都被加上了相同的值,它们之间的差值保持不变。因此在后续扫描中,我们仍然可以直接使用原数组的值计算差值,结果不会受到影响。这也是为什么不需要在内存中维护更新后的数组。

6.完成遍历
当循环结束,ans中存储的就是使整个数组变为非递减所需的最小 x 总和。

示例推演

nums = [3, 3, 2, 1]为例:

  • • 索引 1:33,差值为 0,不加。

  • • 索引 2:32,差值为 1,累加ans = 1。逻辑上将nums[2..3]都加 1,数组变为[3, 3, 3, 2]

  • • 索引 3:比较时使用的是原数组的nums[2]=2nums[3]=1,差值2-1=1,累加ans = 2。逻辑上再将nums[3..3]加 1,数组最终变为[3, 3, 3, 3]

  • • 总代价为 2,与题目示例一致。

复杂度分析
  • 时间复杂度:整个过程只对数组进行了一次从左到右的单次扫描,每个元素只访问一次,循环内执行常数时间的减法和取最大值操作。因此时间复杂度为O(n),其中 n 是数组长度。

  • 额外空间复杂度:除了输入的数组外,只使用了固定的几个变量(总代价变量、循环计数器等),不随数据规模增长。因此额外空间复杂度为O(1)

Go完整代码如下:

package main

import (
"fmt"
)

func minOperations(nums []int) (ans int64) {
for i := 1; i < len(nums); i++ {
ans += int64(max(nums[i-1]-nums[i], 0))
}
return
}

func main() {
nums := []int{3, 3, 2, 1}
result := minOperations(nums)
fmt.Println(result)
}

Python完整代码如下:

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

from typing import List

def minOperations(nums: List[int]) -> int:
"""
返回使数组变为非递减所需的最小操作总和(每次操作可以对子数组加上任意正整数 x,
总代价为所有操作的 x 之和)。
"""
ans = 0
for i in range(1, len(nums)):
# 当前一个数大于后一个数时,必须至少增加后一个数(及之后的部分)
# 以消除这个“下降”,最小的增加量就是两者的差值。
ans += max(nums[i-1] - nums[i], 0)
return ans

if __name__ == "__main__":
nums = [3, 3, 2, 1]
result = minOperations(nums)
print(result)

C++完整代码如下:

  


// for std::max

long long minOperations(const std::vector& nums) {
long long ans = 0;
for (size_t i = 1; i < nums.size(); ++i) {
ans += std::max(nums[i-1] - nums[i], 0);
}
return ans;
}

int main() {
std::vector nums = {3, 3, 2, 1};
long long result = minOperations(nums);
std::cout << result << std::endl; // 输出 2
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.

相关推荐
热点推荐
少女胯还是妈妈胯?女人生没生过孩子,一眼就能看穿了

少女胯还是妈妈胯?女人生没生过孩子,一眼就能看穿了

枕边聊育儿
2026-05-22 08:58:46
阿尔瓦雷斯暴怒:别指望我再踢了马竞的办公室空无一人

阿尔瓦雷斯暴怒:别指望我再踢了马竞的办公室空无一人

带你逛体坛
2026-08-11 17:59:09
TA:爱德华兹和鲍尔主动提出支付森林狼法国之行的全部费用

TA:爱德华兹和鲍尔主动提出支付森林狼法国之行的全部费用

北青网-北京青年报
2026-08-11 20:51:08
2005年与2025年的张靓颖,女人过了30,越来越有女人味

2005年与2025年的张靓颖,女人过了30,越来越有女人味

娱你同欢
2026-07-29 22:42:29
92年湖南一男子预感工业铜要大涨,40一公斤时砸下重金囤了100吨

92年湖南一男子预感工业铜要大涨,40一公斤时砸下重金囤了100吨

三农老历
2026-07-31 02:35:32
伤退一个半月,有人说她回不来了?她只用11分钟就让所有人闭嘴

伤退一个半月,有人说她回不来了?她只用11分钟就让所有人闭嘴

曹老师评球
2026-08-11 21:33:06
兰博基尼新车公布:8月14日,正式亮相

兰博基尼新车公布:8月14日,正式亮相

3C毒物
2026-08-12 01:29:08
一句话彻底瓦解消费主义!网友:看完再也不乱花钱了!

一句话彻底瓦解消费主义!网友:看完再也不乱花钱了!

另子维爱读史
2026-08-05 21:01:44
震惊!长鑫存储校招线下宣讲名单引热议,网友:有点飘,竟排斥西交大、哈工大等C9院校,北邮、西工大等也旁落

震惊!长鑫存储校招线下宣讲名单引热议,网友:有点飘,竟排斥西交大、哈工大等C9院校,北邮、西工大等也旁落

火山詩话
2026-08-09 07:40:11
曾靠一首歌狂赚上亿,坐拥五辆豪车,如今为何卖房卖车负债累累?

曾靠一首歌狂赚上亿,坐拥五辆豪车,如今为何卖房卖车负债累累?

妙娱连珠
2026-05-15 15:39:23
10日晚间WTT大满贯:3-1!国乒劲敌晋级,陈幸同下一轮对手确定!

10日晚间WTT大满贯:3-1!国乒劲敌晋级,陈幸同下一轮对手确定!

kio鱼
2026-08-12 00:44:54
正式确定!NBA后卫加盟辽宁男篮,刘子庆大手笔

正式确定!NBA后卫加盟辽宁男篮,刘子庆大手笔

体坛瞎白话
2026-08-11 07:41:46
4 家医院拒诊!腹痛患儿连跑 5 家医院!一场医疗事件的影响有多大?这个国家一代儿科医生出走!儿科年年亏损,医疗服务提价有用么?

4 家医院拒诊!腹痛患儿连跑 5 家医院!一场医疗事件的影响有多大?这个国家一代儿科医生出走!儿科年年亏损,医疗服务提价有用么?

梅斯医学
2026-08-11 07:53:23
马科斯儿子爆料,他爸的总统之位,是跟杜特尔特“交易”换来的

马科斯儿子爆料,他爸的总统之位,是跟杜特尔特“交易”换来的

爱下厨的阿酾
2026-08-12 00:40:30
不顾央媒警告我行我素!戏混子扎堆,演唱会乱象炸出一堆牛鬼蛇神

不顾央媒警告我行我素!戏混子扎堆,演唱会乱象炸出一堆牛鬼蛇神

看尽落尘花q
2026-08-10 15:29:53
中国电网负债3万亿,外媒称百年难回本

中国电网负债3万亿,外媒称百年难回本

梦想的现实
2026-07-01 01:11:56
一仗缴获1500多挺机枪!这仗打下来,几十个团直接换装

一仗缴获1500多挺机枪!这仗打下来,几十个团直接换装

莫地方
2026-08-11 19:35:26
逼出最强恩比德?76人总裁盛赞詹姆斯,湖人没他难阻止东契奇放纵

逼出最强恩比德?76人总裁盛赞詹姆斯,湖人没他难阻止东契奇放纵

小路看球
2026-08-11 15:52:35
《奥德赛》再破票房纪录,诺兰是真的顶!

《奥德赛》再破票房纪录,诺兰是真的顶!

来看美剧
2026-08-12 00:19:23
莫言:如果你混到没人找你吃饭,没人喊你聚会,连电话也没几个,那庆祝了,你不是人缘变差,而是真正觉醒了

莫言:如果你混到没人找你吃饭,没人喊你聚会,连电话也没几个,那庆祝了,你不是人缘变差,而是真正觉醒了

品读时刻
2026-05-27 09:00:58
2026-08-12 02:00:49
moonfdd incentive-icons
moonfdd
福大大架构师每日一题
1388文章数 79关注度
往期回顾 全部

科技要闻

AI大战变天:扎克伯格突然回头

头条要闻

网红"雅典娜"失踪3年 好友:她被李姓女网友诱骗至境外

头条要闻

网红"雅典娜"失踪3年 好友:她被李姓女网友诱骗至境外

体育要闻

NBA老顽童,抽着大麻喝着小酒告别了

娱乐要闻

“雅典娜”确认被害 细节令人发指!

财经要闻

AI泡沫的剧本,是2008年的次贷危机?

汽车要闻

闪充/天神之眼B/云辇-C 2027款海豹06售9.99万元起

态度原创

本地
手机
旅游
时尚
数码

本地新闻

黄州一夜,苏轼写给普通人的月光

手机要闻

iQOO Z11S再预热,宁德新能源联合研发电池

旅游要闻

住在拓东路几十年,今天才弄明白家门口这座老城,对昆明有多重要!

时速60公里,“慢”车去南非

数码要闻

内存涨疯了!卢伟冰:大家一定会感觉REDMI K100 Pro越来越香

无障碍浏览 进入关怀版