# 169. Majority Element - LeetCode Python/Java/C++/JS/C#/Go/Ruby Solutions
Visit original link: [169. Majority Element - LeetCode Python/Java/C++/JS/C#/Go/Ruby Solutions](https://leetcode.to/en/leetcode/169-majority-element) for a better experience!
LeetCode link: [169. Majority Element](https://leetcode.com/problems/majority-element), difficulty: **Easy**.
## LeetCode description of "169. Majority Element"
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?
### [Hints]
Hint 1
How to solve the problem in `O(1)` space?
Please search `Boyer-Moore majority vote algorithm`.
## Intuition
The key to solving this problem is to use a hash table to store the occurrence count of each `num`. The `key` is the `num`, and the `value` is the number of times it appears.
## Complexity
- Time complexity: `O(N)`.
- Space complexity: `O(N)`.
## Python
```python
class Solution:
def majorityElement(self, nums: List[int]) -> int:
num_to_count = defaultdict(int)
for num in nums:
num_to_count[num] += 1
if num_to_count[num] >= len(nums) / 2:
return num
```
## Ruby
```ruby
# @param {Integer[]} nums
# @return {Integer}
def majority_element(nums)
num_to_count = Hash.new(0)
nums.each do |num|
num_to_count[num] += 1
if num_to_count[num] > nums.size / 2
return num
end
end
end
```
## Java
```java
class Solution {
public int majorityElement(int[] nums) {
Map numToCount = new HashMap<>();
for (int num : nums) {
numToCount.put(num, numToCount.getOrDefault(num, 0) + 1);
if (numToCount.get(num) > nums.length / 2) {
return num;
}
}
return -1; // This line won't be reached due to problem constraints
}
}
```
## Other languages
```java
// Welcome to create a PR to complete the code of this language, thanks!
```
Dear LeetCoders! For a better LeetCode problem-solving experience, please visit website [LeetCode.to](https://leetcode.to): Dare to claim the best practices of LeetCode solutions! Will save you a lot of time!
Original link: [169. Majority Element - LeetCode Python/Java/C++/JS/C#/Go/Ruby Solutions](https://leetcode.to/en/leetcode/169-majority-element).
GitHub repository: [leetcode-python-java](https://github.com/leetcode-python-java/leetcode-python-java).