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

(define/contract (majority-element nums)
  (-> (listof exact-integer?) exact-integer?)
  (define candidate 0)
  (define count 0)

  (for ([n nums])
    (cond
        [(zero? count)
            (set! candidate n)
            (set! count 1)
        ]
        [(= candidate n)
            (set! count (+ count 1))
        ]
        [else
            (set! count(- count 1))
        ]
    )
  )
  candidate
)