【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
相关推荐
_深海凉_14 小时前
LeetCode热题100-跳跃游戏 II
算法·leetcode·游戏
csuzhucong14 小时前
力扣OJ(2301-2600)
算法·leetcode·职场和发展
玛丽莲茼蒿14 小时前
Leetcode hot100 旋转图像【中等】
算法·leetcode·职场和发展
阿Y加油吧14 小时前
堆 / 优先队列专题二刷笔记:前 K 个高频元素 & 数据流的中位数
java·笔记·算法
Chase_______14 小时前
LeetCode 2090 题解:半径为 k 的子数组平均值,定长滑动窗口经典题一文搞懂
算法·leetcode·职场和发展
MicroTech202514 小时前
微算法科技(NASDAQ :MLGO)量子图像加权平均滤波:以量子优势重构图像处理效率与精度
科技·算法·重构
jieyucx14 小时前
Go 语言函数入门:定义、参数、返回值
c++·算法·golang·入门·函数
Brilliantwxx14 小时前
【C++】认识标准库STL(1)
开发语言·c++·笔记·程序人生·算法
啦啦啦_999914 小时前
2. 梯度下降算法分类 & 梯度下降与正规方程对比
人工智能·算法·分类
CHANG_THE_WORLD14 小时前
gc.py 功能介绍:PDF 对象流还原工具(用于 pdfium 测试)
算法·pdf