题目描述:
给定一个大小为 n 的数组 nums ,返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。
你可以假设数组是非空的,并且给定的数组总是存在多数元素。
示例 1:
输入:nums = [3,2,3]
输出:3
示例 2:
输入:nums = [2,2,1,1,1,2,2]
输出:2
在这里插入代码片
class Solution(object):
def majorityElement(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
# your code here
lst1 = []
for i in nums:
if i not in lst1:#去掉列表中的重复元素 放入lst1中
lst1.append(i)
dic = {}
print(lst1)#[3, 2, 6]
for i in lst1:
dic[i] = nums.count(i)#count函数返回列表中元素出现的次数
print(dic)#{3: 2, 2: 1, 6: 5}
print(dic.items())#dict_items([(3, 2), (2, 1), (6, 5)])
dic = dict(sorted(dic.items(), key=lambda x: x[1], reverse=True))#对字典的value进行排序。key是函数对象
print("dic:",dic)#{6: 5, 3: 2, 2: 1}
#a=max(dic,key=dic.get)
a=max(dic, key=lambda i: dic[i])#取字典中值最大的,对应的键
return a#6
nums = [3,2,3,6,6,6,6,6]
a=Solution().majorityElement(nums)
print(a)
总结:
代码中使用了list的方法有:
1.list的count函数,返回列表中元素出现的次数
2.反复使用lambda
3.max函数:
max(iterable, *[, key, default])
max(arg1, arg2, *args[, key])
函数功能为取传入的多个参数中的最大值,或者传入的可迭代对象元素中的最大值。默认数值型参数,取值大者;字符型参数,取字母表排序靠后者。还可以传入命名参数key,其为一个函数,用来指定取最大值的方法。default命名参数用来指定最大值不存在时返回的默认值。
具体使用方法搜索:
Python——max()的用法 见:
https://blog.csdn.net/mrdonghe/article/details/99936106?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165114813916782388059502%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=165114813916782388059502&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allbaidu_landing_v2~default-4-99936106.142v9control,157v4control&utm_term=python%E4%B8%ADmax%E5%87%BD%E6%95%B0&spm=1018.2226.3001.4187
a=max(dic, key=lambda i: dic[i])#取字典中值最大的,对应的键
1、key后面是函数
2、max遍历dict的值,取最大
3、key后面的函数通过这个值去查找对应的键
4、不加key这个函数的话,默认遍历的是字典的key,最后输出最大的键
dic={6: 5, 7: 2, 2: 1}
#a=max(dic, key=lambda i: dic[i])#ok
a=max(dic, key=dic.get)
print(a)#6
b=max(dic)
print(b)#7
4.sorted函数:
sorted函数就比sort函数要强大许多了,sort只能对列表进行排序,sorted可以对所有可迭代类型进行排序,并且返回新的已排序的列表。语法如下:
sorted(iterable, cmp=None, key=None, reverse=False) --> new sorted list
1
一共可接受4个参数,含义分别如下:
1.可迭代类型,例如字典、列表、
2.比较函数
3.可迭代类型中某个属性,对给定元素的每一项进行排序
4.降序或升序
与sorted经常结合使用的有:
1.比较函数经常会用到lambda。
lambda表达式,通常是在需要一个函数,但是又不想费神去命名一个函数的场合下使用,也就是指匿名函数。比如对元组组成的列表中某一项进行排序:
students= [('jane', 'B', 12), ('dave', 'B', 10),('john', 'A', 15)]
new_students=sorted(students, key=lambda student : student[2]) # sort by age
print(new_students)#[('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]
print(students)#[('jane', 'B', 12), ('dave', 'B', 10), ('john', 'A', 15)]
sored再举例:
d = {'ac':25, 'be':22, 'jk':28, 'mf':19}
sorted_keys = sorted(d) # 对字典而言,默认是对keys进行排序
print(sorted_keys)#['ac', 'be', 'jk', 'mf'] 根据第1个字母排序
sorted_keys1 = sorted(d, key=lambda x : x[1])
print(sorted_keys1)#['ac', 'be', 'mf', 'jk'] 根据第2个字母排序
#字典 items() 函数作用:以列表返回可遍历的(键, 值) 元组数组
d_new = sorted(d.items(), key=lambda x: x[1], reverse=True) # 根据年龄排序,返回列表形式
print(d_new)#[('jk', 28), ('ac', 25), ('be', 22), ('mf', 19)]
d_new = dict(d_new) # 使用内置函数把嵌套列表转换成字典
print(d_new)#{'jk': 28, 'ac': 25, 'be': 22, 'mf': 19}
sorted_values = sorted(d.values(), key=lambda x:x, reverse=False) # 排序值
print(sorted_values)#[19, 22, 25, 28] 根据value排序在这里插入代码片
sort函数举例子:
a = ['Google', 'Runoob', 'Taobao', 'Facebook']
a.sort() # 默认根据第一个字母排序
print(a)#['Facebook', 'Google', 'Runoob', 'Taobao']
a.sort(key=lambda x: x[1]) # 根据第二个字母排序
print(a)#['Facebook', 'Taobao', 'Google', 'Runoob']