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

2026-04-28:能被 3 整除的三元组最大和。用go语言,在数组 nums 中挑选出恰好三个数,使得这三个数的总和可以被 3 整除。 要求计算所有

0
分享至

2026-04-28:能被 3 整除的三元组最大和。用go语言,在数组 nums 中挑选出恰好三个数,使得这三个数的总和可以被 3 整除。

要求计算所有满足条件的三元组里,它们的三个数之和所能达到的最大值;如果完全找不到满足条件的三元组,则结果为 0。

3 <= nums.length <= 100000。

1 <= nums[i] <= 100000。

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

输出: 9。

解释:

总和能被 3 整除的有效三元组为:

(4, 2, 3),和为 4 + 2 + 3 = 9。

(2, 3, 1),和为 2 + 3 + 1 = 6。

因此,答案是 9。

题目来自力扣3779。

解题过程详细解析 一、核心定义与初始化准备 1. 关键常量定义

  • K=3:我们必须恰好选3个数字,这是固定要求;

  • MOD=3:判断和能否被3整除,只需要看总和对3取余的结果(余数只能是0、1、2)。

2. 动态规划数组定义

创建二维数组f,格式:f[选了i个数][余数为r] = 最大和

  • • 第一维:0~3,代表当前选中的数字个数(0个、1个、2个、3个);

  • • 第二维:0~2,代表当前数字总和对3取余的结果

  • • 数组值:存储对应状态下的最大总和

3. 数组初始化
  • • 所有位置默认赋值为负无穷(表示初始状态不可达,没有有效数字);

  • • 唯一初始有效状态:f[0][0] = 0(选0个数,总和为0,余数0,和为0)。

二、核心遍历逻辑(逐个处理数组中的数字)

遍历数组里的每一个数字x从后往前更新动态规划数组(避免重复使用同一个数字),核心规则:
对于当前已选j个数字、余数为r的状态,加入数字x后,会变成:选j+1个数字、余数为(r+x)%3,总和变为 原总和 + x
我们只保留每个状态下的最大总和

分步处理示例(输入数组:[4,2,3,1])

我们一步步看每个数字处理后,状态的变化:

  1. 1.处理第一个数字 4

  • • 4对3取余=1;

  • • 从选0个、余数0的状态,更新为:选1个、余数1,和为4;

  • • 此时有效状态:选1个余数1=4。

2.处理第二个数字 2

  • • 2对3取余=2;

  • • 基于选0个的状态:新增 选1个余数2=2;

  • • 基于选1个余数1的状态:新增 选2个余数0=4+2=6;

  • • 此时有效状态:选1个(1=4、2=2),选2个(0=6)。

3.处理第三个数字 3

  • • 3对3取余=0;

  • • 基于选0个:新增 选1个余数0=3;

  • • 基于选1个:更新选2个的最大和(余数1=4+3=7、余数2=2+3=5);

  • • 基于选2个余数0:更新选3个余数0=6+3=9(这就是最终答案);

  • • 此时已经得到:恰好选3个数、余数0、和为9。

4.处理第四个数字 1

  • • 1对3取余=1;

  • • 继续更新所有状态,会得到另一个三元组和为6;

  • • 对比后,最大和依旧是9。

三、最终结果计算

遍历结束后,我们只需要看一个目标状态:
f[3][0]恰好选3个数字,总和余数为0(能被3整除)的最大和

  • • 如果这个值大于0,就返回它;

  • • 如果这个值无效(负无穷),说明没有符合条件的三元组,返回0。

示例中f[3][0]=9,所以最终输出9。

四、时间复杂度 & 额外空间复杂度 1. 时间复杂度

  • • 设数组长度为n(最大10万);

  • • 动态规划的两层固定循环:选数字个数(3次)+ 余数(3次)= 固定9次操作;

  • • 总操作次数 =n × 9,是线性复杂度;

  • 时间复杂度:O(n)

2. 额外空间复杂度
  • • 动态规划数组是固定大小:4行 × 3列 = 12个元素

  • • 空间大小不随数组长度变化,是常数级空间;

  • 额外空间复杂度:O(1)

总结
  1. 1. 解题核心:用动态规划记录「选几个数+总和余数」的最大和,精准匹配「恰好3个数、能被3整除」的要求;

  2. 2. 处理逻辑:逐个遍历数字,更新所有可能的状态,只保留最大和;

  3. 3. 效率:时间O(n)(处理10万数据极快),空间O(1)(占用内存极小),完全满足题目数据规模要求。

Go完整代码如下:

package main

import (
"fmt"
"math"
)

func maximumSum(nums []int)int {
const K = 3
const MOD = 3
f := [K + 1][MOD]int{}
for i := range f {
for j := range f[i] {
f[i][j] = math.MinInt
}
}
f[0][0] = 0
for _, x := range nums {
for j := K - 1; j >= 0; j-- {
for r := range MOD {
f[j+1][(r+x)%MOD] = max(f[j+1][(r+x)%MOD], f[j][r]+x)
}
}
}
return max(f[K][0], 0)
}

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

Python完整代码如下:

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

import math

def maximum_sum(nums):
K = 3
MOD = 3
# 初始化 dp 表,dp[j][r] 表示选 j 个数,和模 MOD 为 r 的最大和
dp = [[-math.inf] * MOD for _ in range(K + 1)]
dp[0][0] = 0

for x in nums:
# 倒序更新 j,确保每个数最多选一次(0/1 背包)
for j in range(K - 1, -1, -1):
for r in range(MOD):
# 避免在更新过程中使用本轮已更新的值,倒序 j 已保证
new_r = (r + x) % MOD
if dp[j][r] != -math.inf:
dp[j + 1][new_r] = max(dp[j + 1][new_r], dp[j][r] + x)

# 返回选恰好 K 个数且和能被 MOD 整除的最大和,若不存在则返回 0
return max(dp[K][0], 0)

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

C++完整代码如下:

  




using namespace std;

int maximumSum(vector& nums) {
constint K = 3;
constint MOD = 3;

// 初始化 dp 表,f[j][r] 表示选 j 个数,和模 MOD 为 r 的最大和
vector int >> f(K + 1 , vector< int >(MOD, INT_MIN));
f[ 0 ][ 0 ] = 0 ;

for ( int x : nums) {
// 倒序更新 j,确保每个数只使用一次
for ( int j = K - 1 ; j >= 0 ; j--) {
for ( int r = 0 ; r < MOD; r++) {
if (f[j][r] != INT_MIN) {
int new_r = (r + x) % MOD;
f[j + 1 ][new_r] = max(f[j + 1 ][new_r], f[j][r] + x);
}
}
}
}

// 返回选恰好 K 个数且和能被 MOD 整除的最大和,若不存在则返回 0
return max(f[K][ 0 ], 0 );
}

int main() {
vector< int > nums = { 4 , 2 , 3 , 1 };
int result = maximumSum(nums);
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.

相关推荐
热点推荐
斯洛特:赛季收官三连胜也不会平息批评,我们需要长期的表现

斯洛特:赛季收官三连胜也不会平息批评,我们需要长期的表现

懂球帝
2026-05-09 00:16:12
欧盟称中国高风险,中方八字回应,特朗普发出通牒:不履行就加税

欧盟称中国高风险,中方八字回应,特朗普发出通牒:不履行就加税

轩逸阿II
2026-05-09 00:32:57
胖东来商场卫生间一家长抱着孩子在洗手池小便,工作人员:事发时该区域暂无人员在岗,洗手池及周边区域已进行专业消杀,水龙头也已更换

胖东来商场卫生间一家长抱着孩子在洗手池小便,工作人员:事发时该区域暂无人员在岗,洗手池及周边区域已进行专业消杀,水龙头也已更换

扬子晚报
2026-05-08 14:41:21
100股今日获机构买入评级 12股上涨空间超20%

100股今日获机构买入评级 12股上涨空间超20%

证券时报
2026-05-08 17:52:29
突发利空!亚太股市全线下跌,国产算力突发大跌,商业航天卷土重来?

突发利空!亚太股市全线下跌,国产算力突发大跌,商业航天卷土重来?

看财经show
2026-05-08 17:19:24
富商马清铿情妇喊话原配妻子,恭喜对方解脱,原配至今沉默没离婚

富商马清铿情妇喊话原配妻子,恭喜对方解脱,原配至今沉默没离婚

树娃
2026-05-06 09:19:57
追踪24年,科学家发现一个人的“生物钟”走得越快,寿命就越短

追踪24年,科学家发现一个人的“生物钟”走得越快,寿命就越短

混沌录
2026-05-06 23:43:06
锐评:郑钦文击败布克沙丑陋地赢?又哭了?药娃退赛是个好消息?

锐评:郑钦文击败布克沙丑陋地赢?又哭了?药娃退赛是个好消息?

网球之家
2026-05-07 23:04:17
浙江宣传评世界杯转播权之争:与其花费巨资追捧海外赛事,不如投入本土足球

浙江宣传评世界杯转播权之争:与其花费巨资追捧海外赛事,不如投入本土足球

澎湃新闻
2026-05-08 12:24:10
网传山西大同订婚强奸案男主出狱后发文:一天刑期未减,因我始终没有认罪

网传山西大同订婚强奸案男主出狱后发文:一天刑期未减,因我始终没有认罪

互联网大观
2026-05-07 18:16:26
只有4国领导人敢去红场?普京痛苦抉择,泽连斯基反手放出一招

只有4国领导人敢去红场?普京痛苦抉择,泽连斯基反手放出一招

阿离家居
2026-05-08 08:54:34
叶珂终于摊牌!生女两年无名分,分手真相扯出黄晓明私生活

叶珂终于摊牌!生女两年无名分,分手真相扯出黄晓明私生活

橙星文娱
2026-05-08 09:06:29
海事情报公司称有3艘伊朗油轮突破美军封锁

海事情报公司称有3艘伊朗油轮突破美军封锁

界面新闻
2026-05-08 18:58:20
日本3-1德国!赢球不可怕,可怕的是赛后张本的这番话,格局很大

日本3-1德国!赢球不可怕,可怕的是赛后张本的这番话,格局很大

刘哥谈体育
2026-05-08 13:24:01
iOS 26.5下周正式推送,一口气上线五大新功能

iOS 26.5下周正式推送,一口气上线五大新功能

环球网资讯
2026-05-08 10:49:06
一场季前赛就打出身价!女篮一姐重返WNBA,宫鲁鸣请放她一马

一场季前赛就打出身价!女篮一姐重返WNBA,宫鲁鸣请放她一马

弄月公子
2026-05-08 21:04:07
43岁身材还这么“满”?王心凌的身材到底是怎么保持的?

43岁身材还这么“满”?王心凌的身材到底是怎么保持的?

马拉松跑步健身
2026-05-04 19:32:40
属兔人注意:5月8-11号人在家中坐,事从天上来!是福是祸自己看

属兔人注意:5月8-11号人在家中坐,事从天上来!是福是祸自己看

匹夫来搞笑
2026-05-08 19:49:28
一艘中国油轮在霍尔木兹海峡附近遇袭?外交部:相关遇袭船只系马绍尔群岛籍,船上有中国籍船员

一艘中国油轮在霍尔木兹海峡附近遇袭?外交部:相关遇袭船只系马绍尔群岛籍,船上有中国籍船员

环球网资讯
2026-05-08 15:40:12
高璐,加盟清华大学

高璐,加盟清华大学

双一流高校
2026-05-08 00:09:47
2026-05-09 01:23:00
moonfdd incentive-icons
moonfdd
福大大架构师每日一题
1217文章数 67关注度
往期回顾 全部

科技要闻

SK海力士平均奖金600万 工服成相亲神器

头条要闻

外籍银行高层在香港豪宅性虐及杀害两女子 内幕解密

头条要闻

外籍银行高层在香港豪宅性虐及杀害两女子 内幕解密

体育要闻

他把首胜让给队友,然后用一年时间还清账单

娱乐要闻

古天乐被曝隐婚生子,新娘竟是她

财经要闻

估值3000亿 DeepSeek寻求500亿元融资

汽车要闻

MG 4X实车亮相 将于5月11日开启盲订

态度原创

本地
房产
艺术
健康
亲子

本地新闻

用苏绣的方式,打开江西婺源

房产要闻

豪掷6.8亿拿地!何猷君大手笔投资三亚!

艺术要闻

惊艳私房摄影:感受真情与绝美画面!

干细胞能让人“返老还童”吗

亲子要闻

家长的五个坏习惯,可能影响孩子一生!

无障碍浏览 进入关怀版