169. 多数元素

169. 多数元素,第1张

题目描述:
给定一个大小为 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.降序或升序

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/788849.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-05
下一篇 2022-05-05

发表评论

登录后才能评论

评论列表(0条)

保存