给定整数序列作为数组,请确定是否有可能通过从数组中删除不超过一个元素来获得严格递增的序列。
如果a0 <a1 <... <an,则序列a0,a1,...,an被认为是严格增加的。仅包含一个元素的序列也被认为是严格增加的。
对于序列= [1、3、2、1],输出应为-
almostIncreasingSequence(sequence) = false.
为了获得严格递增的顺序,此数组中没有一个元素可以删除。
对于序列= [1、3、2],输出应为-
almostIncreasingSequence(sequence) = true.
我们可以从数组中删除3以获得严格递增的序列[1,2]。或者,我们可以删除2以获得严格递增的序列[1,3]。
以下是代码-
const arr1 = [3, 5, 67, 98, 3]; const arr2 = [4, 3, 5, 67, 98, 3]; const almostIncreasingSequence = sequence => { let removed = 0; let i = 0; let prev = -Infinity; while(removed < 2 && i < sequence.length) { if(sequence[i] > prev) { prev = sequence[i]; }else{ prev = Math.min(prev, sequence[i]); removed++; } i++; } return removed < 2; }; console.log(almostIncreasingSequence(arr1)); console.log(almostIncreasingSequence(arr2));
输出结果
这将在控制台上产生以下输出-
true false