You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何优化LeetCode多数元素题解,无需count变量提升运行效率

针对LeetCode多数元素问题的优化解答

首先可以明确:你完全不需要保留greatest_count变量,也不需要手动维护最大值跟踪逻辑,有多种更简洁、效率更高的实现方式。

1 直接去掉两个跟踪变量的极简实现

你原代码的核心逻辑是找出出现次数最多的元素,Python内置的max()函数支持通过key参数自定义比较规则,可以直接替代你手动遍历、比较计数的逻辑,优化后不需要定义任何额外的跟踪变量:

class Solution:
    def majorityElement(self, nums):
        return max(set(nums), key=nums.count)

这个写法的底层逻辑和你原代码完全一致,只是把手动维护最大值的逻辑交给了内置函数实现,代码精简度提升非常明显。

2 时间复杂度更优的摩尔投票法

你原代码的时间复杂度为O(n²):遍历集合中每个元素时,每次调用nums.count()都会完整遍历一次原数组。而本题明确规定多数元素的出现次数严格大于数组长度的1/2,利用这个特性可以使用摩尔投票法,时间复杂度O(n)、空间复杂度O(1),不需要额外创建集合、也不需要统计元素的总出现次数:

class Solution:
    def majorityElement(self, nums):
        candidate = None
        count = 0
        for num in nums:
            if count == 0:
                candidate = num
            count += 1 if num == candidate else -1
        return candidate

该解法的count是抵消计数器而非总出现次数统计,利用多数元素数量超过一半的特性,遍历结束后剩下的候选元素一定是多数元素,效率远高于原实现,适合处理大规模数组。

3 其他优化思路

如果希望保留计数统计逻辑,可以用哈希表一次遍历完成所有元素的计数,时间复杂度降到O(n),避免重复遍历数组:

from collections import Counter
class Solution:
    def majorityElement(self, nums):
        count_map = Counter(nums)
        return max(count_map.keys(), key=count_map.get)

内容的提问来源于stack exchange,提问作者Preston_Jarvis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 22:57:00