【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
相关推荐
Wave8454 小时前
C++继承详解
开发语言·c++·算法
睡觉就不困鸭5 小时前
第9天 两数之和
算法·哈希算法·散列表
贾斯汀玛尔斯5 小时前
每天学一个算法--动态规划(Dynamic Programming, DP)
算法·动态规划
水木流年追梦5 小时前
CodeTop 热门题目汇总hot300题
算法·leetcode·职场和发展
努力努力再努力wz5 小时前
【Linux网络系列】万字硬核解析网络层核心:IP协议到IP 分片重组、NAT技术及 RIP/OSPF 动态路由全景
java·linux·运维·服务器·数据结构·c++·python
小糖学代码5 小时前
LLM系列:2.pytorch入门:3.基本优化思想与最小二乘法
人工智能·python·算法·机器学习·ai·数据挖掘·最小二乘法
爱写代码的倒霉蛋5 小时前
天梯赛备赛经验分享(基础版)
经验分享·算法
f3iiish5 小时前
2078. 两栋颜色不同且距离最远的房子 力扣
算法·leetcode
王老师青少年编程6 小时前
csp信奥赛C++高频考点专项训练之贪心算法 --【排序贪心】:拼数
c++·算法·贪心·csp·信奥赛·排序贪心·拼数
炽烈小老头6 小时前
【 每天学习一点算法 2026/04/21】螺旋矩阵
学习·算法