Talentd
FleetCode

229. Majority Element II

Medium56.5% acceptance9 companies

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

Example 1:

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

Example 2:

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

Example 3:

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

Constraints:

  • 1 <= nums.length <= 5 * 104
  • -109 <= nums[i] <= 109

Follow up: Could you solve the problem in linear time and in O(1) space?

Hints open one at a time

Hint 1
Think about the possible number of elements that can appear more than ⌊ n/3 ⌋ times in the array.
Hint 2
It can be at most two. Why?
Hint 3
Consider using Boyer-Moore Voting Algorithm, which is efficient for finding elements that appear more than a certain threshold.
14:34
Still stuck?Read 3 approaches, or watch a walkthrough.
Open solution
Loading editor…
1class Solution:
2 def majorityElement(self, nums: List[int]) -> List[int]:
3
Starter codePython 3Spaces: 4
Examples
Input
[3,2,3]
Input
[1]
Input
[1,2]
Your code is saved on this device.Solution