代码一:用两个list
1 class Solution(object): 2 # 用两个list 3 def countLargestGroup(self, n): 4 """ 5 :type n: int 6 :rtype: int 7 """ 8 # 存放不同的数位和 9 listkey = [] 10 # 统计各个数位和的个数 11 listvalue = [] 12 for i in range(1, n + 1): 13 # 存放数位和 14 sumeve = 0 15 temp = i 16 # 计算每个数十进制的数位和 17 while temp > 0: 18 sumeve += temp % 10 19 temp = int(temp / 10) 20 # 若该数的数位和没出现过,则新增到listkey中,listvalue对应的计数置为1 21 if sumeve not in listkey: 22 listkey.append(sumeve) 23 listvalue.append(1) 24 # 若该数位和出现过,则在listkey中取得对应下标,在listvalue对应的计数加1 25 else: 26 listvalue[listkey.index(sumeve)] += 1 27 # 统计并列最多的组 28 res = 0 29 for ch in listvalue: 30 if ch == max(listvalue): 31 res += 1 32 return res
代码二:用字典
1 class Solution(object): 2 # 用字典 3 def countLargestGroup(self, n): 4 """ 5 :type n: int 6 :rtype: int 7 """ 8 # 统计各个数位和(key)及其个数(value) 9 dict = {} 10 for i in range(1, n + 1): 11 # 存放数位和 12 sumeve = 0 13 temp = i 14 # 计算每个数十进制的数位和 15 while temp > 0: 16 sumeve += temp % 10 17 temp = int(temp / 10) 18 # 若该数的数位和没出现过,则新增到字典中 19 if sumeve not in dict.keys(): 20 dict[sumeve] = 1 21 # 若该数位和出现过,则字典中value加1 22 else: 23 dict[sumeve] += 1 24 # 统计并列最多的组 25 res = 0 26 for ch in dict.values(): 27 if ch == max(dict.values()): 28 res += 1 29 return res