難度:簡單
給你一個四位?正?整數?
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
題解:
class 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. 通過兩個兩位數的方式組合這些數字,以產生最小的可能和。