题目描述: 给定一个大小为 n 的数组 nums ,返回其中的多数元素。多数元素是指在数组中出现次数 大于 ? n/2 ? 的元素。 你可以假设数组是非空的,并且给定的数组总是存在多数元素。 示例 1: 输入:nums = [3,2,3] 输出:3
示例 2: 输入:nums = [2,2,1,1,1,2,2] 输出:2
import collections
'''
collections是Python内建的一个集合模块,
提供了许多有用的集合类。该模块实现了专门的容器数据类型,
提供了Python的通用内置容器,dict,list,set和tuple的替代方法。
在内置数据类型(dict、list、set、tuple)的基础上,
collections模块还提供了几个额外的数据类型:Counter、deque、defaultdict、namedtuple和OrderedDict等
'''
class Solution(object):
def majorityElement(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
counts = collections.Counter(nums)
print(counts)
print(counts.keys())
return max(counts, key=counts.get)
nums = [3,2,3,6,6,6,6,6]
a=Solution().majorityElement(nums)
print(a)
总结: 1.Counter: 计数器,主要用来计数 Counter类的目的是用来跟踪值出现的次数。它是一个无序的容器类型,以字典的键值对形式存储,其中元素作为key,其计数作为value(可以认为Counter直接生成一个Hash表,这一点在处理问题时经常用到)。 计数值可以是任意的Interger(包括0和负数)。Counter类和其他语言的bags或multisets很相似。 c = Counter(‘abcdeabcdabcaba’)print c 输出:Counter({‘a’: 5, ‘b’: 4, ‘c’: 3, ‘d’: 2, ‘e’: 1}) 2. 代码: a = dict(((1,3),(0,-1),(3,21))) m = max(a, key=a.get) 1 2 为什么这返回与最大值对应的键? 字典“a”是python中的一个可迭代的结构。当您在a中循环使用x时,您将循环使用字典中的键。 在第二行中,max函数有两个参数:一个可迭代对象(a)和一个可选的“key”函数。 Key功能将用于评估a中最大的项目的值。 max(a,key = a.get)将返回一个a.get(item)的值最大的项。即对应于最大值的键。
总结: 1、key后面是函数 2、max遍历dict的值,取最大 3、key后面的函数通过这个值去查找对应的键 4、不加key这个函数的话,默认遍历的是字典的key,最后输出最大的键
|