# 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.

&#x20;

**Example 1:**

```
Input: nums = [3,2,3]
Output: 3
```

**Example 2:**

```
Input: nums = [2,2,1,1,1,2,2]
Output: 2
```

&#x20;

**Constraints:**

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

&#x20;

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

```python
class Solution:
    def majorityElement(self, nums: List[int]) -> int:
        d = defaultdict(int)
        majority = None
        for num in nums:
            d[num] += 1
            if d[num] > len(nums)/2:
                majority = num
        return majority
```

For O(1) Solution Refer Algorithm : <https://en.wikipedia.org/wiki/Boyer%E2%80%93Moore_majority_vote_algorithm>
