LeetCode題解:劍指 Offer 39. 數(shù)組中出現(xiàn)次數(shù)超過一半的數(shù)字,摩爾投票,JavaScript,詳細(xì)注釋

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

解題思路:

  1. 假設(shè)輸入:[1, 2, 3, 2, 2, 2, 5, 4, 2],多數(shù)元素為2。
  2. 使用count統(tǒng)計(jì)出現(xiàn)最多元素的次數(shù),result緩存多數(shù)元素。
  3. 遍歷數(shù)組,如果出現(xiàn)resultnums[i]不同,則將count計(jì)數(shù)相抵消。
  4. 最終剩下的result只會是最多數(shù)量的元素2。
/**
 * @param {number[]} nums
 * @return {number}
 */
var majorityElement = function(nums) {
  let result = nums[0] // 緩存結(jié)果,從第一個(gè)值開始查找
  let count = 1 // 第一次查找計(jì)數(shù)為1

  for (let i = 1; i < nums.length; i++) {
    // 如果當(dāng)前有計(jì)數(shù),則在當(dāng)前基礎(chǔ)上繼續(xù)統(tǒng)計(jì)
    if (count > 0) {
      // 如果result與nums[i]相同,則累加一個(gè)。
      // 不同則減少一個(gè)
      count += result === nums[i] ? 1 : -1
    } else if (count === 0) {
      // 如果count被清零,則重新開始統(tǒng)計(jì)
      result = nums[i]
      count = 1
    }
  }

  return result
};
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容