【leetcode--169.多数元素】

返回数组中超过长度半数数量的元素的值

一开始想的是进行sort排序,然后取中间值与两头的分别比对一下,如果一致就返回。

复制代码
class Solution:
    def majorityElement(self, nums: List[int]) -> int:
        nums.sort(reverse = True)
        n = len(nums)
        mid = int(n // 2)
        if nums[n-1] == nums[mid] or nums[0] == nums[mid]:
            return nums[mid]
        else:
            return 0

但是提交的时候发现还有这种情况:

于是调整一下思路:

因为排序后的数组,如果存在一个数超过数组长度一半,中位数一定是那个数,所以使用Counter计数,只需要判断中位数的次数有没有超过长度一半即可

复制代码
class Solution:
    def majorityElement(self, nums: List[int]) -> int:
        nums.sort(reverse = True)
        n = len(nums)
        mid = int(n // 2)
        counts = Counter(nums)
        if counts[nums[mid]]>= mid :
            return nums[mid]
        else:
            return 0
相关推荐
许彰午7 分钟前
13_HashMap底层原理详解
算法·哈希算法
GIOTTO情7 分钟前
基于 NLP 情感加权算法的智能舆情处置系统架构与落地实现
人工智能·算法·自然语言处理
无风听海11 分钟前
PKCE 的 S256 算法深度剖析:从协议设计到密码学原理
javascript·网络·算法·密码学
凌波粒13 分钟前
LeetCode--530.二叉搜索树的最小绝对差(二叉树)
算法·leetcode·职场和发展
sali-tec29 分钟前
C# 基于OpenCv的视觉工作流-章82-毛刺检测
图像处理·人工智能·opencv·算法·计算机视觉
恒想进步30 分钟前
leetcode202.快乐数
算法
8Qi844 分钟前
LeetCode 208:实现 Trie(前缀树)—— Java 题解 ✅
java·算法·leetcode·二叉树·tire树
吴可可1231 小时前
CAD2004二次开发C#可行性解析
算法
字节高级特工1 小时前
C++11(二) 革新:引用折叠与lambda表达式
java·开发语言·c++·算法
碎碎念_4921 小时前
”二分“高频题型总结:最小最大值、最大最小值、满足条件最小 / 最大
算法·二分