难度:简单
给你一个四位 正 整数
num。请你使用num中的 数位 ,将num拆成两个新的整数new1和new2。new1和new2中可以有 前导 0 ,且num中 所有 数位都必须使用。
- 比方说,给你
num = 2932,你拥有的数位包括:两个2,一个9和一个3。一些可能的[new1, new2]数对为[22, 93],[23, 92],[223, 9]和[2, 329]。请你返回可以得到的
new1和new2的 最小 和。示例 1:
输入:num = 2932 输出:52 解释:可行的 [new1, new2] 数对为 [29, 23] ,[223, 9] 等等。 最小和为数对 [29, 23] 的和:29 + 23 = 52 。示例 2:
输入:num = 4009 输出:13 解释:可行的 [new1, new2] 数对为 [0, 49] ,[490, 0] 等等。 最小和为数对 [4, 9] 的和:4 + 9 = 13 。提示:
1000 <= num <= 9999
题解:
pythonclass Solution: def minimumSum(self, num: int) -> int: # 创建一个列表用于存储数字的每一位 digits = [] # 将输入的数字转换为字符串,以便逐位处理 s_num = str(num) # 提取每一位数字,并将其转换为整数 # 这个步骤将确保即使数字有前导0,也能正确处理 digits.append(int(s_num[0]) % 1000) # 第一位 digits.append(int(s_num[1]) % 100) # 第二位 digits.append(int(s_num[2]) % 10) # 第三位 digits.append(int(s_num[3])) # 第四位 # 对数字进行排序,以便后续组合得到最小和 final_digits = sorted(digits) # 组合形成两个两位数的和,返回其最小值 # final_digits[0] 和 final_digits[1] 组合成第一个两位数 # final_digits[2] 和 final_digits[3] 组合成第二个两位数 return final_digits[0] * 10 + final_digits[2] + final_digits[1] * 10 + final_digits[3] # 算法思路: # 1. 将给定的四位整数拆分为各个数字(位数),存入列表中。 # 2. 对数字进行排序(从小到大)。 # 3. 通过两个两位数的方式组合这些数字,以产生最小的可能和。
leetcode:2160. 拆分数位后四位数字的最小和(python3解法,数学相关算法题)
心软且酷丶2025-05-28 2:05
相关推荐
用户8356290780514 小时前
Python 实现 PowerPoint 形状动画设置ponponon6 小时前
时代的眼泪,nameko 和 eventlet 停止维护后的项目自救,升级和替代之路Flittly6 小时前
【从零手写 ClaudeCode:learn-claude-code 项目实战笔记】(5)Skills (技能加载)敏编程6 小时前
一天一个Python库:pyarrow - 大规模数据处理的利器Flittly8 小时前
【从零手写 ClaudeCode:learn-claude-code 项目实战笔记】(4)Subagents (子智能体)CoovallyAIHub8 小时前
181小时视频丢给GPT-5,准确率只有15%——南大联合NVIDIA等五校发布多模态终身理解数据集CoovallyAIHub8 小时前
CVPR 2026 | GS-CLIP:3D几何先验+双流视觉融合,零样本工业缺陷检测新SOTA,四大3D工业数据集全面领先!xlp666hub9 小时前
Leetcode 第三题:用C++解决最长连续序列有意义11 小时前
深度拆解分割等和子集:一维DP数组与倒序遍历的本质