📜  Javascript程序检查排序数组中的多数元素(1)

📅  最后修改于: 2023-12-03 15:01:49.165000             🧑  作者: Mango

Javascript程序检查排序数组中的多数元素

在一个排序的数组中,如果一个数字出现的次数超过数组长度的一半,则这个数字就是数组中的多数元素。编写一个函数来检查一个排序数组中是否存在多数元素。

解题思路

要找到多数元素,我们需要遍历整个数组,记录每个数字出现的次数。我们可以使用一个对象来记录每个数字的出现次数。遍历完数组后,我们可以再次遍历对象,找到出现次数超过数组长度一半的数字。

这个方法的时间复杂度为 O(n),空间复杂度为 O(n)。

代码实现
function majorityElement(nums) {
  const count = {};
  const half = Math.floor(nums.length / 2);
  for (let num of nums) {
    if (count[num]) {
      count[num]++;
    } else {
      count[num] = 1;
    }
    if (count[num] > half) {
      return num;
    }
  }
  return null;
}

在这个代码中,我们首先创建了一个空对象 count。然后遍历整个数组,以数字 num 作为键,存储每个数字出现的次数。每当我们遇到一个数字,我们将其数值加一。如果一个数字的计数超过数组长度的一半,我们返回这个数字。如果在循环结束后还没有找到多数元素,我们返回 null。

使用例子
const nums = [1, 1, 2, 2, 2, 2, 3, 4, 5, 5, 5, 5, 5, 5, 5];
const majority = majorityElement(nums);
console.log(majority); // 输出 5

在这个例子中,我们使用了一个包含了多数元素的数组。我们传入这个数组到 majorityElement 函数中,然后打印出函数返回值。函数返回了正确的多数元素 5。

总结

我们可以使用一个对象来记录每个数字出现的次数,并在遍历过程中查找多数元素。这个方法虽然时间复杂度为 O(n),但需要 O(n) 的空间复杂度。