美文网首页
LeetCode题解:剑指 Offer 39. 数组中出现次数超

LeetCode题解:剑指 Offer 39. 数组中出现次数超

作者: Lee_Chen | 来源:发表于2023-10-25 10:15 被阅读0次

原题链接:
https://leetcode.cn/problems/shu-zu-zhong-chu-xian-ci-shu-chao-guo-yi-ban-de-shu-zi-lcof/

解题思路:

  1. 假设输入:[1, 2, 3, 2, 2, 2, 5, 4, 2],多数元素为2
  2. 使用count统计出现最多元素的次数,result缓存多数元素。
  3. 遍历数组,如果出现resultnums[i]不同,则将count计数相抵消。
  4. 最终剩下的result只会是最多数量的元素2
/**
 * @param {number[]} nums
 * @return {number}
 */
var majorityElement = function(nums) {
  let result = nums[0] // 缓存结果,从第一个值开始查找
  let count = 1 // 第一次查找计数为1

  for (let i = 1; i < nums.length; i++) {
    // 如果当前有计数,则在当前基础上继续统计
    if (count > 0) {
      // 如果result与nums[i]相同,则累加一个。
      // 不同则减少一个
      count += result === nums[i] ? 1 : -1
    } else if (count === 0) {
      // 如果count被清零,则重新开始统计
      result = nums[i]
      count = 1
    }
  }

  return result
};

相关文章

网友评论

      本文标题:LeetCode题解:剑指 Offer 39. 数组中出现次数超

      本文链接:https://www.haomeiwen.com/subject/hbjeidtx.html