每日一题 2578. 最小和分割(简单,模拟)

每日一题 2578. 最小和分割(简单,模拟)_第1张图片
思路:

  1. 拆分 num 的每一位数字,将他们排序。
  2. 最大的两个放在个位,其次两个放十位,以此类推。注意并不需要重新组合出 num1 和 num2 ,他只要和即可。
  3. 优化,可以不使用排序,因为只有 0 到 9 一共十个数字,只需要统计它们出现的次数,然后从 9 开始计算即可。
class Solution:
    def splitNum(self, num: int) -> int:
        l = []
        while num > 0:
            l.append(num % 10)
            num //= 10
        l.sort(reverse=True)
        ans = 0
        for i in range(len(l)):
            ans += l[i]*10**(i // 2)
        
        return ans

你可能感兴趣的:(用Python刷力扣,算法,leetcode,python)