1399. 统计最大组的数目

 

 

 

 

 代码一:用两个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
原文地址:https://www.cnblogs.com/panweiwei/p/12800496.html