我遇到問題以及如何解決它。請注意,我對JavaScript相對來說比較陌生,這個問題讓我覺得自己過於複雜了。使用for循環或switch語句的JavaScript序列
問題:
鑑於整數作爲陣列的序列,判定是否有可能通過不超過一個元件從陣列中除去,以獲得嚴格遞增順序。
例
對於序列= [1, 3, 2, 1]
,輸出應該是 almostIncreasingSequence(sequence) = false;
有此陣列可在爲了獲得嚴格遞增順序被刪除中沒有一個元素是。
對於序列= [1, 3, 2]
,輸出應該是 almostIncreasingSequence(sequence) = true
。
您可以從數組中刪除3以獲得嚴格遞增的序列[1, 2]
。或者,您可以刪除2以獲得嚴格遞增的序列[1, 3]
。
感謝您的所有意見!我想更新這是一個更好的問題,並且還通知您,如果有人想要檢查它並查看是否有更簡潔的方法,我已找到解決方案。 :)
function almostIncreasingSequence(sequence) {
if(sequence.length == 2) return true;
var error = 0;
for(var i = 0; i < sequence.length - 1; i++){
if(sequence[i] >= sequence[i+1]){
var noStepBack = sequence[i-1] && sequence[i-1] >= sequence[i+1];
var noStepFoward = sequence[i+2] && sequence[i] >= sequence[i+2];
if(i > 0 && noStepBack && noStepFoward) {
error+=2;
}else{
error++;
}
}
if(error > 1){
return false;
}
}
return true;
}
歡迎使用堆棧溢出。請閱讀:https://stackoverflow.com/help/mcve – Twisty
請注意,如果問題中提到「嚴格增加序列」,它沒有指定它如何增加,所以你可以有'[1,2,3,5,8 ,13]'這將是有效的,我的提示是你要嘗試看看,如果差異是積極的,而不是一個具體的數字 –
這個看似簡單的問題似乎很難正確解決... –