整数の配列が配列である場合、配列から複数の要素を削除することによって厳密に増加する配列を得ることができるかどうかを判断します。配列がほぼ増加する配列を保持するかどうかを確認する
シーケンス= [1, 3, 2, 1]
の場合、出力は
almostIncreasingSequence(sequence) === false
は厳密に増加するシーケンスを得るために取り外すことができ、この配列には一つの要素はありませんする必要があります。あなたは厳密に増加シーケンス[1, 2]
を取得するために、アレイから3を削除することができたよう
シーケンス= [1, 3, 2]
の場合、出力は
almostIncreasingSequence(sequence) === true
をする必要があります。あるいは、2を取り除いて厳密に増加するシーケンス[1, 3]
を得ることができます。私はこの問題を解決する方法を把握しようとしている
function almostIncreasingSequence(sequence) {
//compare current int to previous, return true if greater than
//remove int at index and compare with new values, return false if comparison fails
var result = false;
for(var i = 0; i < sequence.length; i++){
var newSequence = sequence.slice();
var subSequence = newSequence.splice(i, 1);
for(var j = 0; j < newSequence.length - 1; j++){
if(newSequence === newSequence.sort((a,b) => a < b).reverse()){
result = true;
}
}
}
return result;
}
:ここ
は、私がこれまで持っているものです。私は非常に近いと思っていますが、何らかの理由で条件文でreverseを呼び出すと、newSequence変数もソートされます。条件付きで2つの変数をソートします.1つではありません。結果として、それは真実に解決されます。なぜこれが起こっているのか分かりません。どんなフィードバックもありがとうございます。
'newSequence.sort()は'配列を変更し、それが新しい配列を返しません。 – Barmar
'sort'の比較関数は' -1'、 '0'、または' 1'を返します。関数は 'true'または' false'を返します。 – Barmar
'reverse()'は配列の場所を変更します。 – Barmar