検索[Algorythm][JS]多数
質問する
数値配列numsをパラメータとして渡します.数字のうち半数を超える(多数、半を超える)数字を返してください.
たとえば、
二つの問題を思いついた.
一つはモルの過半数投票アルゴリズムで解くことです
1つは,次のmapオブジェクトを用いた解である.
既存の固定アルゴリズムではなく、自分が考えた答えを先に書くことにした.
数値配列numsをパラメータとして渡します.数字のうち半数を超える(多数、半を超える)数字を返してください.
たとえば、
nums = [3,2,3]
return 3
nums = [2,2,1,1,1,2,2]
return 2
nums = [3,2,3]
return 3
nums = [2,2,1,1,1,2,2]
return 2
가정
nums 배열의 길이는 무조건 2개 이상
に答える二つの問題を思いついた.
一つはモルの過半数投票アルゴリズムで解くことです
1つは,次のmapオブジェクトを用いた解である.
既存の固定アルゴリズムではなく、自分が考えた答えを先に書くことにした.
function moreThanHalf(nums) {
let map = new Map();
for(let i = 0; i < nums.length; i++) {
const curr = nums[i];
if(map.has(curr)) {
const count = map.get(curr);
map.set(curr, count + 1);
} else {
map.set(curr, 1);
}
}
const answer = [...map].reduce((a, b) => {
return a[1] > b[1] ? a : b;
})[0];
return answer;
}
過半数の投票アルゴリズムで解決しなければならない.Reference
この問題について(検索[Algorythm][JS]多数), 我々は、より多くの情報をここで見つけました https://velog.io/@gygy/AlgorythmJS-과반수-찾기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol