题目描述
给一个整数数组
问怎么选数字,可以让能得到的结果最大,同时这个接结果需要是3的倍数?
基本分析
- 怎么判断能不能被3整除?和 % 3 == 0
- 怎么判断该从数组中删掉哪些数字?(1)和%3==1, 删最小的余1的数字,不行删俩最小的余2的数字;(2)和% 3 == 2,删最小的余2的数字或者俩最小的余1的数字
- 怎么构造出ans?从小到大枚举出现过的数字,如果该删就删,否则构造为结果
代码
| class Solution: |
| def largestMultipleOfThree(self, digits: List[int]) -> str: |
| cnt, modulu = [0] * 10, [0] * 3 |
| s = 0 |
| for d in digits: |
| cnt[d] += 1 |
| modulu[d |
| s += d |
| |
| del_d, del_q = 0, 0 |
| if s |
| del_d, del_q = (1, 1) if modulu[1] >= 1 else (2, 2) |
| if s |
| del_d, del_q = (2, 1) if modulu[2] >= 1 else (1, 2) |
| |
| ans = "" |
| for i in range(10): |
| for j in range(cnt[i]): |
| if i |
| del_q -= 1 |
| else: |
| ans += str(i) |
| |
| if len(ans) > 0 and ans[-1] == '0': |
| return '0' |
| else: |
| return ans[::-1] |
总结
- 根据和的%3的结果分类讨论
- 结果需要考虑是"0"的特殊情况
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现