javascript中使用splice的Sock Merchant问题不起作用
我下面的解决方案对9个测试用例中的6个测试用例有效,我无法理解为什么它对下面的测试用例无效。注意:我使用了拼接而不是排序优先的方法。提前谢谢 问题是:javascript中使用splice的Sock Merchant问题不起作用,javascript,Javascript,我下面的解决方案对9个测试用例中的6个测试用例有效,我无法理解为什么它对下面的测试用例无效。注意:我使用了拼接而不是排序优先的方法。提前谢谢 问题是: 功能(n,ar){ 变量i=0,j=1; var计数=0; while(i1){ if(ar[i]==ar[j]){ ar.接头(i,1); ar.接头(j,1); 计数++; i=0; j=i+1; } 否则{ 如果(j>=ar.length-1){ i++; j=i+1; }否则{ j++; } } } 返回计数; } 成功的测试用例:
功能(n,ar){
变量i=0,j=1;
var计数=0;
while(i1){
if(ar[i]==ar[j]){
ar.接头(i,1);
ar.接头(j,1);
计数++;
i=0;
j=i+1;
}
否则{
如果(j>=ar.length-1){
i++;
j=i+1;
}否则{
j++;
}
}
}
返回计数;
}
成功的测试用例:
102020010030501020
产出:3
失败的测试用例:
4555664143663636161455
输出(预期):9由于索引“j”总是大于索引“i”,因此不应首先拼接“i”。删除较低的元素将偏移以下所有数组元素的索引 尝试改变
ar.拼接(i,1);
ar.接头(j,1)代码>问题陈述是什么?这个函数应该做什么?我已经添加了问题的链接。谢谢
function sockMerchant(n, ar) {
var i=0,j=1;
var count = 0;
while(i<=ar.length-1 && ar.length>1){
if (ar[i]==ar[j]){
ar.splice(i,1);
ar.splice(j,1);
count++;
i=0;
j=i+1;
}
else{
if(j>=ar.length-1){
i++;
j=i+1;
}else{
j++;
}
}
}
return count;
}