参考大神的答案与理解
from collections import Counter
from math import log10
from typing import List
class Solution:
def sumDigitDifferences(self, nums: List[int]) -> int:
n = len(nums)
m = int(log10(nums[0])) + 1 # 算出整数有多少位
ans = 0
for _ in range(m):
cnt = Counter() # 创建一个统计出现次数的字典
for i, x in enumerate(nums):
nums[i], y = divmod(x, 10) # 整除取余,并且将商数赋值给nums中的自己本身
cnt[y] += 1 # 统计各个数字出现的次数
ans += sum(v * (n - v) for v in cnt.values()) // 2 # 计算每个不同数位差的和
return ans
Solution().sumDigitDifferences([13, 23, 12])