給定一個數組,將其傳入一個highestRank(arr)函數,並且返回數組中出現頻率最大的元素。
若有多個出現頻率最大的元素,傳回數值最大的那個。
舉例如下:
arr = [12, 10, 8, 12, 7, 6, 4, 10, 12]; highestRank(arr) //=> returns 12 arr = [12, 10, 8, 12, 7, 6, 4, 10, 12, 10]; highestRank(arr) //=> returns 12 arr = [12, 10, 8, 8, 3, 3, 3, 3, 2, 4, 10, 12, 10]; highestRank(arr) //=> returns 3
對於這一類求出現頻率,咋們最好是作個統計,看各個數字出現的頻率是多少。
接著,篩選出出現頻率最大的那一個,或者說一組數。
最後,從這一組數中找出最大的,並且回傳。
我個人比較傾向於使用hash物件來解決,高效而且便於枚舉。
排序應該也可以解決,但效率一定會低些
function highestRank(arr){ var hash = {}; var highest = 0; var highestArray = []; for(var i=0;i<arr.length;i++){ var cur = arr[i]; if(hash[cur]){ hash[cur] = 1 + hash[cur]; } else{ hash[cur] = 1; } if(hash[cur] > highest){ highest = hash[cur]; } } for(var j in hash){ if(hash.hasOwnProperty(j)){ if(hash[j] === highest){ highestArray.push(j); } } } return Math.max.apply(null,highestArray); }
以上就是 JavaScript趣題:求數組出現頻率最大元素的內容,更多相關內容請關注PHP中文網(www.php.cn)!