给出一个整数序列作为数组,确定是否可以通过从数组中删除不超过一个元素来获得严格递增的序列。 我创建这段代码
function almostIncreasingSequence(sequence) {
let index;
let licznik = 0;
for (index = 1; index < sequence.length; index++) {
if (sequence[index - 1] >= sequence[index]) {
sequence.splice(index - 1, 1);
licznik++;
index = 0;
} else if (sequence[index] > sequence[index + 1]) {
sequence.splice(index + 1, 1);
licznik++;
index = 0;
}
}
if (licznik > 1) {
return false;
} else {
return true;
}
}
但是它不能与表[1、2、3、4、99、5、6]一起使用。有什么建议吗?
答案 0 :(得分:0)
您已经接近解决方案,您必须使用splice方法遍历数组,执行三个步骤:
splice
在每一步中删除一个元素。true
。第二步比较两个数组元素,并在找到几个sequence[i] > sequence[i + 1]
这样的元素后停止;
function almostIncreasingSequence(sequence) {
for (let index = 0; index < sequence.length; ++index) {
const removed = sequence.splice(index, 1);
let sorted = true;
for (let j = 0; j < sequence.length - 1; ++j) {
if (sequence[j] > sequence[j + 1]) {
sorted = false;
break;
}
}
if (sorted) { return true; }
sequence.splice(index, 0, removed);
}
return false;
}
console.log(almostIncreasingSequence([1, 2, 3, 4, 99, 5, 6]));