Skip to content

Latest commit

 

History

History
62 lines (49 loc) · 1.22 KB

229._majority_element_ii.md

File metadata and controls

62 lines (49 loc) · 1.22 KB

###229. Majority Element II

题目: https://leetcode.com/problems/majority-element-ii/

难度: Medium

思路:

majority element是两两比较扔掉不同的元素,然后最后会留下一个。

这里变成三三比较来扔东西, find all elements that appear more than ⌊ n/3 ⌋ times,所以最多可以有两个majority element ii.

最后再加一个比较来确认这些函数是majority element

class Solution(object):
    def majorityElement(self, nums):
        """
        :type nums: List[int]
        :rtype: List[int]
        """
        cnt1 = 0
        cnt2 = 0
        maj1 = 0
        maj2 = 0
        for num in nums:
        	if maj1 == num:
        		cnt1 += 1
        	elif maj2 == num:
        		cnt2 += 1
        	elif cnt1 == 0:
        		maj1 = num
        		cnt1 += 1
        	elif cnt2 == 0:
        		maj2 = num
        		cnt2 += 1
        	else:
        		cnt1 -= 1
        		cnt2 -= 1

        cnt1 = 0
        cnt2 = 0

        n = len(nums)
        res = []
        for num in nums:
        	if maj1 == num:
        		cnt1 += 1
        	elif maj2 == num:
        		cnt2 += 1
        if cnt1 > n/3:
        	res.append(maj1)
        if cnt2 > n/3:
        	res.append(maj2)
        return res