问题描述
我正在经历一些代码挑战,并遇到了一个挑战:https://www.hackerrank.com/challenges/countingsort4/problem
基本上,它必须进行计数排序,但要注意一点。我完全不知道计数排序,因此编写了以下算法,它通过了所有测试用例,但我希望有人能帮助我理解我的算法和计数排序算法,以及我的情况更糟:
function countSort(arr) {
const toBeReplaced=(arr.length/2);
let mapOfString={};
let distinctIntegers=[];
for(let i=0;i<arr.length;i++){
let insertDash=false;
if(i<toBeReplaced) {
insertDash=true
}
let x=arr[i][0];
let s=arr[i][1];
if(!mapOfString[x]){
mapOfString[x]=[];
insertDash?mapOfString[x].push('-'):mapOfString[x].push(s);
distinctIntegers.push(x)
} else{
insertDash?mapOfString[x].push('-'):mapOfString[x].push(s);
}
}
const sorteddistinctIntegers=distinctIntegers.sort((a,b)=>{
if(parseInt(a)>parseInt(b)){return 1}
else if(parseInt(a)<parseInt(b)){return -1}
else {return 0}
});
let finalString='';
sorteddistinctIntegers.forEach(elem=>{
const charLen=mapOfString[elem].length;
for(let i=0;i<charLen;i++){
finalString=finalString+mapOfString[elem][i]+' ';
}
})
console.log((finalString.substring(0,finalString.length-1)))
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)