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

2026-10-04:最大有效数对和。用go语言,给定一个包含 n 个整数的数组 nums,以及一个整数 k。选取两个索引 i 和 j,要求 i 位于 j 的左

0
分享至

2026-10-04:最大有效数对和。用go语言,给定一个包含 n 个整数的数组 nums,以及一个整数 k。选取两个索引 i 和 j,要求 i 位于 j 的左侧,并且两个索引之间的差值不小于 k,也就是 j 减去 i 的结果至少为 k。对于所有满足这种要求的索引组合,计算 nums[i] 与 nums[j] 的和,最后返回这些和当中最大的那个值。

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

1 <= nums[i] <= 1000000000。

1 <= k <= n - 1。

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

输出: 13。

解释:

有效对为:

(0, 2): nums[0] + nums[2] = 6

(0, 3): nums[0] + nums[3] = 3

(0, 4): nums[0] + nums[4] = 9

(1, 3): nums[1] + nums[3] = 5

(1, 4): nums[1] + nums[4] = 11

(2, 4): nums[2] + nums[4] = 13

因此,答案为 13 。

题目来自力扣3979。

具体过程可以分步骤理解:

  1. 1. 初始化答案和左侧最大值
    用 ans 保存目前找到的最大有效数对和,初始为 0。
    用 mx 保存当前所有合法左端点中的最大值,初始也为 0。由于题目中 nums[i] 都是正数,初始为 0 不会影响最终结果。

  2. 2. 右端点从 k 开始遍历
    因为要求 j - i >= k,且 i 必须小于 j,所以最小的右端点 j 至少是 k。
    因此循环让 j 从 k 一直走到数组最后一个位置。

  3. 3. 每次先扩大合法左端点范围
    当右端点移动到 j 时,新变得合法的左端点是 j-k。
    也就是说,之前 j 较小时,位置 j-k 还不能作为左端点;现在 j 增大了,位置 j-k 满足 j - (j-k) = k,所以它可以被选为左端点了。
    于是把 nums[j-k] 纳入考虑范围,并更新 mx:
    mx 变成原来的 mx 和 nums[j-k] 中较大的那个。
    更新后,mx 就代表从下标 0 到 j-k 这个范围内所有 nums[i] 的最大值。

  4. 4. 计算以当前 j 为右端点的最佳和
    当前右端点是 nums[j],左端点只需要选合法的最大值 mx。
    所以以 j 为右端点时,最佳有效数对和就是 mx + nums[j]。
    然后用这个和去更新全局答案 ans,使 ans 始终保存目前遇到的最大值。

  5. 5. 遍历结束后返回 ans
    因为每个右端点 j 都计算了它对应的最佳左端点组合,所以最终 ans 就是所有合法数对和中的最大值。

以示例 nums = [1, 3, 5, 2, 8],k = 2 为例:

  • • 初始 ans = 0,mx = 0。

  • • j = 2:把 nums[0] = 1 纳入左端点候选,mx = 1。当前右端点是 nums[2] = 5,候选和为 1 + 5 = 6,ans = 6。

  • • j = 3:把 nums[1] = 3 纳入左端点候选,mx = max(1, 3) = 3。当前右端点是 nums[3] = 2,候选和为 3 + 2 = 5,ans 仍为 6。

  • • j = 4:把 nums[2] = 5 纳入左端点候选,mx = max(3, 5) = 5。当前右端点是 nums[4] = 8,候选和为 5 + 8 = 13,ans 更新为 13。

  • • 循环结束,返回 13。

这个方法之所以正确,是因为对于每一个右端点 j,它都只关心合法左端点范围内最大的那个值。而随着 j 不断向右移动,合法左端点范围只会扩大,不会缩小,所以可以用一个变量 mx 动态维护这个范围内的最大值,不需要每次重新扫描。

总的时间复杂度:
只对右端点 j 从 k 到 n-1 遍历一次,每次只做常数次比较和加法,因此时间复杂度是 O(n)。

总的额外空间复杂度:
只使用了 ans、mx 等常数个变量,没有额外开辟与数组规模相关的空间,因此额外空间复杂度是 O(1)。如果算输入数组本身,总空间是 O(n),但额外空间是 O(1)。

Go完整代码如下:

package main

import (
"fmt"
)

func maxValidPairSum(nums []int, k int) (ans int) {
mx := 0
for j := k; j < len(nums); j++ {
mx = max(mx, nums[j-k]) // nums[i] 的最大值
ans = max(ans, mx+nums[j])
}
return
}

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

Python完整代码如下:

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

def max_valid_pair_sum(nums, k):
ans = 0
mx = 0

for j in range(k, len(nums)):
mx = max(mx, nums[j - k]) # nums[i] 的最大值
ans = max(ans, mx + nums[j])

return ans

if __name__ == "__main__":
nums = [1, 3, 5, 2, 8]
k = 2
result = max_valid_pair_sum(nums, k)
print(result)

C++完整代码如下:

  




int maxValidPairSum(const std::vector& nums, int k) {
int ans = 0;
int mx = 0;
int n = static_cast(nums.size());

for (int j = k; j < n; ++j) {
mx = std::max(mx, nums[j - k]); // nums[i] 的最大值
ans = std::max(ans, mx + nums[j]);
}

return ans;
}

int main() {
std::vector nums = {1, 3, 5, 2, 8};
int k = 2;
int result = maxValidPairSum(nums, k);
std::cout << result << std::endl;
return0;
}

我们相信人工智能为普通人提供了一种“增强工具”,并致力于分享全方位的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-10-05 09:08:22
中国大满贯爆大冷!国乒遇首败,,奥运亚军0-3淘汰,,王曼昱光速下班

中国大满贯爆大冷!国乒遇首败,,奥运亚军0-3淘汰,,王曼昱光速下班

陶寻爱说
2026-10-05 13:08:38
净利暴涨968%股价却跌回低位!天赐材料真是A股最大冤案吗?

净利暴涨968%股价却跌回低位!天赐材料真是A股最大冤案吗?

慧眼看世界哈哈
2026-10-05 19:35:27
中国纯电重卡已经是另一个维度的存在了:下坡能给电网倒送电!

中国纯电重卡已经是另一个维度的存在了:下坡能给电网倒送电!

兴趣知识
2026-10-04 05:35:44
80后集体“盼退休”:不是懒了,是心里那根弦快断了

80后集体“盼退休”:不是懒了,是心里那根弦快断了

你在偷看谁
2026-08-19 20:58:41
NBA重磅首秀来袭!詹姆斯带领76人迎战卫冕冠军

NBA重磅首秀来袭!詹姆斯带领76人迎战卫冕冠军

吴猖旅行ing
2026-10-05 19:54:43
台湾可以保留自己的军队,大陆不派一兵一卒进台

台湾可以保留自己的军队,大陆不派一兵一卒进台

小马姨
2026-10-04 17:17:00
WTT中国大满贯:蒯曼单局7-4被追平!11-9险胜,2-0领先冲开门红

WTT中国大满贯:蒯曼单局7-4被追平!11-9险胜,2-0领先冲开门红

刘姚尧的文字城堡
2026-10-05 13:44:15
扫黑除恶 | 辽宁省公安厅公布5起新型恶势力犯罪典型案例

扫黑除恶 | 辽宁省公安厅公布5起新型恶势力犯罪典型案例

新浪财经
2026-10-04 18:18:06
一手好牌打稀烂!曾是短剧霸总专业户,如今却无人问津,太可惜

一手好牌打稀烂!曾是短剧霸总专业户,如今却无人问津,太可惜

动物奇奇怪怪
2026-09-29 00:28:33
华人注意! 澳洲新规生效: 退休后离开回国, 这些钱都拿不到! 这个时间点是关键

华人注意! 澳洲新规生效: 退休后离开回国, 这些钱都拿不到! 这个时间点是关键

澳微Daily
2026-10-05 14:53:01
两性心理学:敢和别人老婆“偷情”的男人,绝大多数都会有这两个“心理”,超准

两性心理学:敢和别人老婆“偷情”的男人,绝大多数都会有这两个“心理”,超准

心理观察局
2026-07-16 06:35:04
不被中俄认可的格罗西,为当联合国秘书长,承诺不会受美国操控

不被中俄认可的格罗西,为当联合国秘书长,承诺不会受美国操控

热点大放送
2026-10-05 23:14:35
蔡康永王伟忠站台“台独”分子,大陆市场还要不要了?

蔡康永王伟忠站台“台独”分子,大陆市场还要不要了?

情感大头说说
2026-10-06 01:02:10
国庆假期实探苹果线下门店:热门机型一机难求,黄牛称加价300元即能拿到现货

国庆假期实探苹果线下门店:热门机型一机难求,黄牛称加价300元即能拿到现货

时代周报
2026-10-05 21:30:30
从雪饼猴到史元庭,一个NPC凭什么带火一座城

从雪饼猴到史元庭,一个NPC凭什么带火一座城

时代周报
2026-10-05 21:40:19
朝鲜战场最难启齿的一幕:17岁女兵为营救战友突破生理底线,此后30年绝口不提,直到秦基伟将军的回忆录道出真相,她的身份才公之于众……

朝鲜战场最难启齿的一幕:17岁女兵为营救战友突破生理底线,此后30年绝口不提,直到秦基伟将军的回忆录道出真相,她的身份才公之于众……

回京历史梦
2026-10-04 11:45:14
美国可能最忌惮的,并非中国突然抛售六千多亿美元美债;真正令华盛顿头疼的,是中国压根不按它最期盼的套路行动

美国可能最忌惮的,并非中国突然抛售六千多亿美元美债;真正令华盛顿头疼的,是中国压根不按它最期盼的套路行动

z千年历史老号
2026-09-11 14:25:55
说出来你可能不信,八国联军的总头子,那个叫瓦德西的德国佬,拎着刀在中国烧杀抢掠一圈回去之后,干了一件让全世界都没想到的事。

说出来你可能不信,八国联军的总头子,那个叫瓦德西的德国佬,拎着刀在中国烧杀抢掠一圈回去之后,干了一件让全世界都没想到的事。

回京历史梦
2026-10-02 14:35:10
张家齐父亲的状态耐人寻味,壮年男人早早不再工作

张家齐父亲的状态耐人寻味,壮年男人早早不再工作

阿废冷眼观察所
2026-10-05 12:56:49
2026-10-06 03:59:00
moonfdd incentive-icons
moonfdd
福大大架构师每日一题
1497文章数 83关注度
往期回顾 全部

科技要闻

2026年诺奖:三名科学家因光遗传学获奖

头条要闻

孙颖莎整顿乒乓球观赛礼仪:有闪光灯、呐喊等干扰

头条要闻

孙颖莎整顿乒乓球观赛礼仪:有闪光灯、呐喊等干扰

体育要闻

30天30队·热:扬尼斯、阿德巴约与克雷

娱乐要闻

蔡康永回应漏洞百出,太平轮旧事被扒

财经要闻

零跑声明切割!蔡康永两面人身份被抵制

汽车要闻

方程豹9月热销破4万 首款皮卡鲨鱼将于四季度上市

态度原创

房产
数码
本地
公开课
军事航空

房产要闻

保利大爆发,冲到榜一!海南楼市前三季度,热销榜出炉!

数码要闻

海外消费者网购下单两次AMD锐龙7 9850X3D处理器,均被调包成十年前的酷睿i3-3000系列产品

本地新闻

中秋逛白塔寺,体验国医妙荟雅集

公开课

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

军事要闻

俄军连续4天轰炸基辅大桥

无障碍浏览 进入关怀版