【发布时间】:2021-06-26 14:44:53
【问题描述】:
任务:给定一个包含 N 个元素的数组。找出每个字符出现的次数,并按出现次数的递减顺序打印,如果出现2个或更多次数相同的次数,则按递减顺序打印。
- 输入大小:
|N| <= 100000 - 示例测试用例:
INPUT
3 3 4 4 7 8
OUTPUT
4 3 8 7
我可以将其转换为地图,但我应该采取哪些进一步的步骤来获得答案?
function asc(arr) {
let map = new Map
let c = 1;
for (let i = 0; i < arr.length; i++) {
if (map.has(arr[i])) {
map.set(arr[i], map.get(arr[i]) + 1)
}
else {
map.set(arr[i], c)
}
}
let narr = [...map];
let tmp;
for (i = 0; i < narr.length; i++) {
for (j = i + 1; j < narr.length; j++) {
if (narr[i][1] > narr[j][1]) {
tmp = narr[i];
narr[i] = narr[j];
narr[j] = tmp;
}
else if ((narr[i][1] = narr[j][1])) {
if (narr[i][0] > narr[j][0]) {
tmp = narr[i];
narr[i] = narr[j];
narr[j] = tmp;
}
}
}
}
return narr;
}
arr = [3, 8, 7, 4, 7, 3, 4];
console.log(asc(arr));
【问题讨论】:
标签: javascript arrays algorithm sorting maps