美文网首页
LeetCode-python 229.求众数 II

LeetCode-python 229.求众数 II

作者: wzNote | 来源:发表于2019-08-23 19:13 被阅读0次

题目链接
难度:中等       类型: 数组


给定一个大小为 n 的数组,找出其中所有出现超过 ⌊ n/3 ⌋ 次的元素。

说明: 要求算法的时间复杂度为 O(n),空间复杂度为 O(1)。

示例1

输入: [3,2,3]
输出: [3]

示例2

输入: [1,1,1,3,3,2,2,2]
输出: [1,2]

解题思路


投票法
超过n/3的数最多只能有两个,选两个候选人a,b,每个候选人的表示方法为[数值,票数]
遍历数组

  • 当前元素为a时,a的票数+1
  • 当前元素为b时,b的票数+1
  • 当前元素既不等于a也不等于b时:
    -- 如果当前有候选人票数为0,新元素上位,票数更新为1
    -- 如果当前所有候选人票数都大于0,a,b两人票数均-1

代码实现

class Solution(object):
    def majorityElement(self, nums):
        """
        :type nums: List[int]
        :rtype: List[int]
        """
        candidate1 = [0, 0]
        candidate2 = [0, 0]
        for n in nums:
            if n == candidate1[0]:
                candidate1[1] += 1
            elif n == candidate2[0]:
                candidate2[1] += 1
            elif candidate1[1] == 0:
                candidate1 = [n, 1]
            elif candidate2[1] == 0:
                candidate2 = [n, 1]
            else:
                candidate1[1] -= 1
                candidate2[1] -= 1
            
        return [x for x in set([candidate1[0], candidate2[0]]) if nums.count(x) > len(nums)/3]

本文链接:https://www.jianshu.com/p/f428ba92ca0c

相关文章

  • LeetCode-python 229.求众数 II

    题目链接难度:中等 类型: 数组 给定一个大小为 n 的数组,找出其中所有出现超过 ⌊ n/3 ...

  • 229. 求众数 II

    给定一个大小为 n 的数组,找出其中所有出现超过 ⌊ n/3 ⌋ 次的元素。 说明: 要求算法的时间复杂度为 O(...

  • 求众数 II

    来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/majori...

  • [leetcode]求众数II

    https://leetcode-cn.com/problems/majority-element-ii/ 解法一...

  • II Boyer-Moore Majority Vote Alg

    229. Majority Element II Given an integer array of size n...

  • 找出数组中出现次数大于N/K的所有元素

    leetcode 的求众数1 和 求众数2,然后我们可以把它泛化到K

  • 求众数

  • 求众数

    给定一个大小为 n 的数组,找到其中的众数。众数是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。 你可以假设数组...

  • 求众数

    题目:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2...

  • 求众数

    给定一个大小为 n 的数组,找到其中的众数。众数是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是...

网友评论

      本文标题:LeetCode-python 229.求众数 II

      本文链接:https://www.haomeiwen.com/subject/otqnsctx.html