2017-10-12 4 views
0
var truthArray = [Bool]() 
func isStrictlyIncreasing(sameSequence: [Int]) { 
    var truthArray = [Bool]() 
    for i in 0 ... sameSequence.count-1{ 
     if sameSequence[i]<sameSequence[i+1] { 
      truthArray.append(true) 
     } 
     else { 
      truthArray.append(false) 
     } 
    } 
} 

func almostIncreasingSequence(sequence: [Int]) -> Bool { 
    for i in 0 ... sequence.count-1 { 
     var sameSequence = sequence 
     let number = sequence[i] 
     sameSequence.remove(at: i) 
     isStrictlyIncreasing(sameSequence: sameSequence) 
     sameSequence.insert(number, at: i) 
    } 
    if truthArray.contains(true) { 
     return true 
    } 
    else { 
     return false 
    } 
} 

スウィフトは、あなたは配列内の番号のいずれかを削除すると、厳密に増加シーケンスを残すために除去することが可能かどうかを判断するように求められます。索引 - CodeFightsに、この特定のコードの挑戦で

私がこのエラーをクリアしようとしたことは、インデックスを1から切り換えて、コードを再調整してインデックスの境界を1減らして、これを3回目に書き換えることです。しかし、私の知識は厳密に限られているので、私の解決策では非常に創造的なものにはなりません。

今私が問題になっているのは、範囲外のインデックスです。私は、コードのどの行が問題を引き起こしているのか、なぜその理由がわからないことを除いて、これが何を意味するのかを正確に知っています。私は初心者であり、これは良い学習経験であるため、直接的な解決策以上のヒントを非常に感謝しています。

ご協力いただきありがとうございます。私がこの質問に追加することができれば、詳細は私に教えてください! if sameSequence[i]<sameSequence[i+1]で:)

+0

' sameSequence場合を持つことができると考えることができますあなたのインデックスは範囲外です。どのように反復しているのか、同じsequenceCountが何であるか考えてみてください。 – chrisz

答えて

0

sameSequenceサイズが10である場合、あなたは常に

範囲から抜け出すだろう、fori=9i=0から(10回)呼び出されます。最後の反復でsameSequence[10]にアクセスしようとすると、範囲外の例外が発生します。

あなたは[i]は for i in 0..<sameSequence.count-1 { }にループを変更することにより、それを修正するが、これはあなたのアルゴリズムに影響し、あなたの問題の解決

関連する問題