鱼C论坛

 找回密码
 立即注册
查看: 2771|回复: 0

[学习笔记] Leetcode 229. Majority Element II

[复制链接]
发表于 2020-9-23 03:15:11 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
Given an integer array of size n, find all elements that appear more than ⌊ n/3 ⌋ times.

Note: The algorithm should run in linear time and in O(1) space.

Example 1:

Input: [3,2,3]
Output: [3]
Example 2:

Input: [1,1,1,3,3,2,2,2]
Output: [1,2]
class Solution:
    def majorityElement(self, nums: List[int]) -> List[int]:
        num1, num2, c1, c2 = 0, 0, 0, 0
        
        for num in nums:
            if num == num1:
                c1 += 1
            elif num == num2:
                c2 += 1
            elif c1 == 0:
                num1 = num
                c1 = 1
            elif c2 == 0:
                num2 = num
                c2 = 1
            else:
                c1 -= 1
                c2 -= 1
        
        
        c1 = c2 = 0
        
        for num in nums:
            if num == num1:
                c1 += 1
            elif num == num2:
                c2 += 1
        
        result = []
        length = len(nums) // 3
        
        if c1 > length:
            result.append(num1)
        if c2 > length:
            result.append(num2)
        return result

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-22 08:10

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表