LeetCode-in-All

169. Majority Element

Easy

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

func majorityElement(nums []int) int {
	count := 1
	majority := nums[0]
	for i := 1; i < len(nums); i++ {
		if nums[i] == majority {
			count++
		} else {
			if count > 1 {
				count--
			} else {
				majority = nums[i]
			}
		}
	}
	count = 0
	for _, num := range nums {
		if num == majority {
			count++
		}
	}
	if count >= (len(nums)/2)+1 {
		return majority
	} else {
		return -1
	}
}