我正在尝试解决几乎增加序列的CodeSignal Arcade挑战。
任务是找出是否可以通过删除不超过一个元素来获得严格递增的序列。
我的代码通过了19个测试用例中的17个。我了解为什么这些测试用例之一失败了。我不明白为什么这个失败了:
输入: 顺序:[3,5,67,98,3] 输出:假 预期输出:true 控制台输出:“计数器:4”
我不明白,为什么它返回Counters = 4。
boolean almostIncreasingSequence(int[] sequence) {
int i, j;
int counter = 0;
for (i=0; i <= sequence.length-1; i++){
for (j=i+1; j <= sequence.length-1; j++){
if (sequence[i] >= sequence[j]){
counter++;
break;
}
}
}
System.out.println("Counter: " +counter);
if (counter <= 1)
return true;
else
return false;
}
答案 0 :(得分:0)
这些循环正在生成太多测试:
for ( outerTrav = 0; outerTrav <= sequence.length-1; outerTrav++ ) {
for ( innerTrav = outerTrav + 1; innerTrav <= sequence.length-1; innerTrav++ ) {
它们正在为每个元素生成与所有后续元素的比较。难道不应该只是将每个元素与紧随其后的元素进行比较吗?