# Majority element in array

Given an array of size n, find the majority element. The majority element is the element that appears more than `⌊ n/2 ⌋` times.

You may assume that the array is non-empty and the majority element always exist in the array.

Example 1:

Input:

``` [3,2,3]
```

Output:

` 3`

Example 2:

Input:

``` [2,2,1,1,1,2,2]
```

Output:

``` 2
```

This problem was taken from Leetcode

[tabby title=”Solution”]

The solution:

Create an object (or associative array, depends of the language), iterate through all elements in the array adding them to the newly created object using the element value as a key. If element exists increase the value +1.
Keep track of mostly repeated element and return it at the end.

```var arr = [3, 3, 4, 2, 4, 2, 4, 4];

/**
* @param {number[]} nums
* @return {number}
*/
var majorityElement = function(nums) {
var elements = {};
var majorityElement = nums[0];
var majorityElementCount = 1;
for(var i in nums) {
var element = nums[i];
elements[element] = typeof elements[element] == 'undefined' ? 1 : elements[element] + 1;
if(elements[element] > majorityElementCount) {
majorityElement = element;
majorityElementCount = elements[element];
}
}
return majorityElement;
};

console.log(">>", majorityElement(arr));```

– Create an object (line 9)
– Iterate through each element in the array feeling up the object with the elements from the array where the element value would be the key of the element (line 14)
– Each time when the element exists, add + 1
– Keep track of mostly repeated element (Lines 16-17)

Could we optimize the code? Slightly. When we add + 1 we could check if the value is already greater than the length of the array / 2 and if se we know that this is the majority element because no other element could have greater value.

```...
if(elements[element] > nums.length / 2) {
return element;
}
...```

[tabbyending]