簡體   English   中英

找到陣列中出現最多的元素我做錯了什么?

[英]What am I doing wrong to find element occurring most in array?

我正在嘗試調試一個在線編碼平台問題。 我面臨的問題是返回最常出現在數組中的元素。 我有興趣糾正我當前的代碼,而不是嘗試其他方法。

function findMostOccured(M, A) { //value of elements in A should not be greater than M
    var N = A.length;
    var count = new Array(M + 1);
    var i;
    for (i = 0; i <= M; i++)
        count[i] = 0;
    var maxOccurence = 1;
    var index = -1;
    for (i = 0; i < N; i++) {
        if (count[A[i]] > 0) {
            var tmp = count[A[i]];
            if (tmp > maxOccurence) {
                maxOccurence = tmp;
                index = i;
            }
            count[A[i]] = tmp + 1;
        } else {
            count[A[i]] = 1;
        }
    }
    return A[index];
}

給定M = 3A = [1, 2, 3, 3, 1, 3, 1] 它應該返回3或1。

var arr = [1, 2, 3, 3, 1, 3, 1];
var M = 3;

function findMostOccured(M, arr) {
  var obj = {};
  var result = [];
  for (let i = 0; i < arr.length; i++) {
    if (obj[arr[i]]) {
      obj[arr[i]] = obj[arr[i]] + 1;
    } else {
      obj[arr[i]] = 1;
    }
  }

  for (var key in obj) {
    if (obj[key] === M) {
      result.push(parseInt(key));
    }
  }

  return result;
}

console.log(findMostOccured(3, arr));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM