LeetCode笔记:多数元素

问题

给定一个大小为 n 的数组 num,返回多数元素。

多数元素是出现超过⌊n/2⌋次的元素。 您可以假设多数元素始终存在于数组中。

案例 1:

Input: nums = [3,2,3]

Output: 3

案例 2:

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

Output: 2

约束条件:

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

进阶:您能解决线性时间和 O(1)空间中的问题吗?

解法

代码:

/**
 * @param {number[]} nums
 * @return {number}
 */
var majorityElement = function (nums) {
  const result = []; //result array
  const obj = {}; //count

  // Count the number of occurrences of each number
  nums.forEach((ele) => {
    if (ele in obj) {
      obj[ele] += 1;
    } else {
      obj[ele] = 1;
    }
  });

  // Determine whether the conditions are met
  for (let key in obj) {
    if (obj[key] > nums.length / 2) {
      result.push(key);
    }
  }

  return result;
};

参考

评论