跳至主要內容

Leetcode 169. Majority Element

Given an array nums of size n, return the majority element.

The majority element is the element that appears more than ⌊n / 2⌋ times. You may assume that the majority element always exists in the array.

Example 1:

Input: nums = [3,2,3]
Output: 3

Example 2:

Input: nums = [2,2,1,1,1,2,2]
Output: 2

My solution need to sort the list first which will be O(nlogn) but won’t have any extra space

class Solution:
    def majorityElement(self, nums: List[int]) -> int:
        nums = sorted(nums)
        return nums[int(len(nums)/2)]

It can be also done by HashMap.

The magic is Moore Voting Algorithm

class Solution:
    def majorityElement(self, nums: List[int]) -> int:
        candidate = None
        count = 0

        for n in nums:
            if count == 0:
                candidate = n
                count += 1
            elif n == candidate:
                count += 1
            else:
                count -= 1
        
        return candidate
分類:ArrayLeetcode

搶先發佈留言

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

由 Compete Themes 設計的 Author 佈景主題