摩尔投票法---leetcode 169 求众数

摩尔投票法

每次从数组中选择两个不相等的元素进行相互抵消(删除),最后剩下的一个元素或几个相同的元素就是出现次数大于n/2的元素

class Solution(object):
    def majorityElement(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        ans = nums[0]
        count = 1
        max_len = len(nums) / 2
        for i in range(1,len(nums)):
            # print(i)
            if nums[i] == ans:
                count += 1
                if count > max_len:
                    return ans
            else:
                count -= 1
                if count == 0:
                    ans = nums[i]
                    count = 1
        
        return ans

 

你可能感兴趣的:(算法,LeetCode)