Majority Element

Problem Description

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:

 

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

Solution (JavaScript)

/**
 * @param {number[]} nums
 * @return {number}
 */
var majorityElement = function(nums) {
    // Boyer-Moore Voting Algorithm
    // https://leetcode.com/problems/majority-element/solutions/127412/majority-element/
    let count = 0, candidate;
    for (let num of nums) {
        if (!count) candidate = num;
        count += num === candidate ? 1 : -1;
    }
    return candidate;
};