美文网首页
LeetCode #169 #229 2018-08-07

LeetCode #169 #229 2018-08-07

作者: 40巨盗 | 来源:发表于2018-08-07 20:19 被阅读0次

169. Majority Element

https://leetcode.com/problems/majority-element/description/

又到了一年一度的Majority Number选举,每个数字都为自己投票,Majority Number获得的票数最多。不同的数字会抵消Majority Number的投票。
代码如下:

class Solution:
    def majorityElement(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        result = nums[0]
        count = 1
        for num in nums[1:]:
            if num == result:
                count += 1
            elif count == 0:
                result = num
                count = 1
            else:
                count -= 1
        return result

229. Majority Element II

https://leetcode.com/problems/majority-element-ii/description/

使用2个候选变量储存结果即可。注意,第一遍的count1和count2并不是2个候选数字在数组中出现的次数,需要重新扫描一遍数组,找出最终结果。
代码如下:

class Solution:
    def majorityElement(self, nums):
        """
        :type nums: List[int]
        :rtype: List[int]
        """
        if not nums:
            return []
        result = []
        value1, value2, count1, count2 = nums[0], 0, 1, 0
        for i in range(1, len(nums)):
            if nums[i] == value1:
                count1 += 1
            elif nums[i] == value2:
                count2 += 1
            elif count1 == 0:
                value1, count1 = nums[i], 1
            elif count2 == 0:
                value2, count2 = nums[i], 1
            else:
                count1 -= 1
                count2 -= 1
        return list(set([num for num in (value1, value2) if nums.count(num) > len(nums) // 3]))

相关文章

网友评论

      本文标题:LeetCode #169 #229 2018-08-07

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