栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

169.LeetCode之Python版本的“多数元素”(简单题)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

169.LeetCode之Python版本的“多数元素”(简单题)

1.题目描述 2.算法思路
  • 由于多数元素在数组中出现的次数大于n//2。如果将数组按照单调递增或单调递减的顺序排序,对奇数个元素和偶数个元素的数组都存在3种情况。
  • 对于奇数个元素的数组。若多数元素位于数组最右端,那么只有n//2位置的元素为多数,题目才成立。若多数元素位于数组最左端,那么同样,只有n//2位置的元素为多数,题目才成立。如果多数元素位于数组中间位置,那么就更不用说了,n//2位置的元素必为多数元素。
  • 对于偶数个元素的数组。若多数元素位于数组的最右端,那么n//2位置的元素必为多数元素。若多数元素位于数组的最左端,那么n//2位置的元素必为多数元素。如果多数元素位于数组中间位置,那么就更不用说了,n//2位置的元素必为多数元素。
  • 如果还是觉得难以理解,可以动手像下图一样画一画,实际上非常简单。不过,一开始,我也是始终无法理解。
3.最终提交代码
class Solution(object):
    def majorityElement(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        nums.sort()
        return nums[len(nums)//2]
4. 编写验证过程中的完整代码
class Solution(object):
    def majorityElement(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        nums.sort()
        return nums[len(nums)//2]

solution = Solution()
print(solution.majorityElement([2,2,1,1,1,2,2]))
5.官方优质代码
class Solution(object):
    def majorityElement(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        counts = Counter(nums)
        return max(counts.keys(), key=counts.get)
6.官方优质代码补充(小小白可以直接复制到编辑器运行的那种代码)
from collections import Counter
class Solution(object):
    def majorityElement(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        counts = Counter(nums)
        return max(counts.keys(), key=counts.get)

solution = Solution()
print(solution.majorityElement([2,2,1,1,1,2,2]))

注意:要从collections包中导入Counter。Counter可以对数组/字符串中的元素/字符出现频率进行统计。 元素/字符则为键,对应元素/字符出现次数为值。另外,需要注意的是max函数,在没有key参数时,统计的是最大的键,在有key参数的时候,统计的是出现频率最高的键。

拒绝内耗,永远心存善念。
虽然迷茫,也不停止前行。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/925800.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号