. - 力扣(LeetCode)

参考大神的答案与理解

 
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])