Skip to content

Latest commit

 

History

History

169

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 

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

 

Constraints:

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

 

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

Companies:
Microsoft, Apple, Facebook, Amazon, Google, Adobe, Rubrik

Related Topics:
Array, Hash Table, Divide and Conquer, Sorting, Counting

Similar Questions:

Solution 1.

// OJ: https://leetcode.com/problems/majority-element/
// Author: github.com/lzl124631x
// Time: O(N)
// Space: O(1)
class Solution {
public:
    int majorityElement(vector<int>& nums) {
        int ans = 0, cnt = 0;
        for (int n : nums) {
            if (ans == n) ++cnt;
            else if (cnt > 0) --cnt;
            else {
                ans = n;
                cnt = 1;
            }
        }
        return ans;
    }
};