【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
相关推荐
ZC跨境爬虫11 分钟前
LeetCode 88. 合并两个有序数组(双指针详解 + Java Python 实现)
java·python·算法·leetcode
Nil20814 分钟前
leetcode 238除了自身以外数组的乘积
数据结构·算法·leetcode
土司大王14 分钟前
LeetCode hot100——最长连续序列
数据结构·算法·leetcode
caimouse15 分钟前
ReactOS 图形系统分析(17):区域填充 — EngPaint / IntEngPaint(paint.c)
c语言·开发语言·算法
生态学者19 分钟前
Ecological Indicators | 机场鸟调的新方法:用 AWM-PC1 读懂干扰梯度下的鸟类群落
人工智能·算法·r语言·微信公众平台
Herbert_hwt27 分钟前
第六章 Java深入理解接口、函数式接口与lambda表达式
java·开发语言·算法
君君思密达1 小时前
LeetCode Hot 100 题目详解-滑动窗口
算法·leetcode·职场和发展
GreenTea9 小时前
深度解读 Anthropic 多智能体报告:更强的模型 ≠ 更好的协调
前端·后端·算法
fqq310 小时前
力扣刷题前置Java语法
算法·leetcode·职场和发展
半夏微凉半夏殇12 小时前
x11与weston对比,优先选哪个
leetcode·均值算法·eclipse