写点什么

LeetCode 题解:剑指 Offer 39. 数组中出现次数超过一半的数字,摩尔投票,JavaScript,详细注释

作者:Lee Chen
  • 2023-10-26
    福建
  • 本文字数:431 字

    阅读完需:约 1 分钟

原题链接: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};
复制代码


发布于: 24 分钟前阅读数: 5
用户头像

Lee Chen

关注

还未添加个人签名 2018-08-29 加入

还未添加个人简介

评论

发布
暂无评论
LeetCode题解:剑指 Offer 39. 数组中出现次数超过一半的数字,摩尔投票,JavaScript,详细注释_JavaScript_Lee Chen_InfoQ写作社区