《劍指offer》— JavaScript(28)數(shù)組中出現(xiàn)次數(shù)超過一半的數(shù)字

數(shù)組中出現(xiàn)次數(shù)超過一半的數(shù)字

題目描述

數(shù)組中有一個數(shù)字出現(xiàn)的次數(shù)超過數(shù)組長度的一半,請找出這個數(shù)字。例如輸入一個長度為9的數(shù)組{1,2,3,2,2,2,5,4,2}。由于數(shù)字2在數(shù)組中出現(xiàn)了5次,超過數(shù)組長度的一半,因此輸出2。如果不存在則輸出0。


思路

  1. 新建一個空對象obj保存數(shù)組中數(shù)字出現(xiàn)的次數(shù);
  2. 遍歷數(shù)組,如果該數(shù)字出現(xiàn)過,則obj中以該數(shù)字為key的value加1;
  3. 若該數(shù)字未出現(xiàn)過,則obj中以該數(shù)字為key的value設為1;
  4. 遍歷obj對象,返回value大于數(shù)組長度一半的key,即為所求數(shù)字。

實現(xiàn)代碼

function MoreThanHalfNum_Solution(numbers)
{
  var obj = {};
  var length = numbers.length;
  numbers.forEach(function(d) {
    if (obj[d]) {
      obj[d]++;
    } else {
      obj[d] = 1;
    }
  })
  for (var i in obj) {
    if (obj[i] > Math.floor(length / 2)) {
      return i;
    }
  }
  return 0;
}
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

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

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