k個の繰り返しの最も多い数字を探します
11179 ワード
質問する
nums = [1,1,,12,2,3],
k = 2
return [1,2]
nums = [1]
k = 1
return [1]
卑怯なコード... function topK(nums, k) {
// 여기에 코드를 작성해주세요.
let nums2 = new Set(nums);
let arr = [];
for (let i = 0; i < nums.length; i++) {
let t = nums.filter(ele => {
return nums[i] === ele;
});
arr.push(t.length);
}
let arr2 = new Set(arr);
const a = Array.from(nums2); //투입 배열
const b = Array.from(arr2); //중복수 많은거
const copyB = [...b]; // 배열의 카피본
let answer = [];
let count = 0;
while (count < k) { // 최대 값을 찾아 카피b에서 자르고
// b의 index 값을 answer에 push
// k번 반복!
let max = Math.max(...copyB);
let idx = b.indexOf(max);
answer.push(a[idx]);
let z = copyB.splice(b.indexOf(max), 1);
count++;
}
return answer;
}
真似したいチームメンバーのコード
function topK(nums, k) {
let obj = {}
for (let i = 0 ; i < nums.length ; i++){
if(nums[i] in obj){
obj[nums[i]] += 1 ;
} else {
obj[nums[i]] = 1 ;
}
}
let answer = Object.keys(obj).sort(
function(a,b){return obj[b] - obj[a]}
)
let result = answer.slice(0,k)
return result.map(x => Number(x))
}
topK([5,5,5,3,3,3,3,3,2,2],2)
function topK(nums, k) {
// 여기에 코드를 작성해주세요.
let nums2 = new Set(nums);
let arr = [];
for (let i = 0; i < nums.length; i++) {
let t = nums.filter(ele => {
return nums[i] === ele;
});
arr.push(t.length);
}
let arr2 = new Set(arr);
const a = Array.from(nums2); //투입 배열
const b = Array.from(arr2); //중복수 많은거
const copyB = [...b]; // 배열의 카피본
let answer = [];
let count = 0;
while (count < k) { // 최대 값을 찾아 카피b에서 자르고
// b의 index 값을 answer에 push
// k번 반복!
let max = Math.max(...copyB);
let idx = b.indexOf(max);
answer.push(a[idx]);
let z = copyB.splice(b.indexOf(max), 1);
count++;
}
return answer;
}
真似したいチームメンバーのコード
function topK(nums, k) {
let obj = {}
for (let i = 0 ; i < nums.length ; i++){
if(nums[i] in obj){
obj[nums[i]] += 1 ;
} else {
obj[nums[i]] = 1 ;
}
}
let answer = Object.keys(obj).sort(
function(a,b){return obj[b] - obj[a]}
)
let result = answer.slice(0,k)
return result.map(x => Number(x))
}
topK([5,5,5,3,3,3,3,3,2,2],2)
function topK(nums, k) {
let obj = {}
for (let i = 0 ; i < nums.length ; i++){
if(nums[i] in obj){
obj[nums[i]] += 1 ;
} else {
obj[nums[i]] = 1 ;
}
}
let answer = Object.keys(obj).sort(
function(a,b){return obj[b] - obj[a]}
)
let result = answer.slice(0,k)
return result.map(x => Number(x))
}
topK([5,5,5,3,3,3,3,3,2,2],2)
缲り返し复制~カット~そして完成したコードはチームメンバーの様子で、半分のコードがあって、ハハハハ
問題を解くときは、より多くのオブジェクトを適用してみるべきです.🧐
Reference
この問題について(k個の繰り返しの最も多い数字を探します), 我々は、より多くの情報をここで見つけました https://velog.io/@pgy93/가장-많이-중복된-숫자-k개-찾기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol