Majority Element II
Problem statement
Given an integer array of size n, find all elements that appear more than ⌊ n/3 ⌋ times.
Example 1:
Input: nums = [3,2,3]Output: [3]
Example 2:
Input: nums = [1]Output: [1]
Example 3:
Input: nums = [1,2]Output: [1,2]
Constraints:
1 <= nums.length <= 5 * 104-109 <= nums[i] <= 109
Follow up: Could you solve the problem in linear time and in O(1) space?
My solution
/**
* @param {number[]} nums
* @return {number[]}
*/
var majorityElement = function(nums) {
const maj = Math.floor(nums.length / 3);
const track = {};
for (const num of nums) {
if (!track[num]) {
track[num] = 1;
} else{
track[num]++
}
}
const value = Object.keys(track).filter(v => track[v] > maj);
// console.log(value, track, maj);
return value;
};