169. Majority Element

Problem


Tags: Array, Hash Table, Divide and Conquer, Sorting, Counting

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 * 10^4
  • -10^9 <= nums[i] <= 10^9

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

Code

JS

// 169. Majority Element (8/30/53764)
// Runtime: 72 ms (78.09%) Memory: 41.25 MB (94.74%) 

/**
 * @param {number[]} nums
 * @return {number}
 */
function majorityElement(nums) {
    let majority = nums[0];
    let vote = 1;
    for(let i = 1; i < nums.length; i++) {
        if(!vote) majority = nums[i];
        vote += nums[i] === majority ? 1 : -1;
    }
    return majority;
};