229. Majority Element II 【M】【52】

来源:互联网 发布:婚礼邀请函电子版软件 编辑:程序博客网 时间:2024/06/03 19:50

Given an integer array of size n, find all elements that appear more than ⌊ n/3 ⌋ times. The algorithm should run in linear time and in O(1) space.

Hint:

  1. How many majority elements could it possibly have?
  2. Do you have a better hint? Suggest it!


Subscribe to see which companies asked this question


还是用抵消的办法

开始的参数是0.5,通过了

后来改成1 ,也通过了……


class Solution(object):    def majorityElement(self, nums):        a = '' #nums[0]        b = '' #nums[1]                ta = 0        tb = 0                l = len(nums)        if l == 2:            return list(set(nums))                times = l/3                for i in nums[:]:            if i == a:                ta += 1            elif i == b:                tb += 1            elif ta <= 0:                a = i                ta = 1            elif tb <= 0:                b = i                tb = 1            else:                ta -= 1                tb -= 1                    res = []        if nums.count(a) > times:            res += a,        if a != b and nums.count(b) > times:            res += b,        return res


0 0