2017-10-12 121 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上的這個特定的代碼挑戰中,您需要確定是否可以刪除數組中的某個數字,以便留下嚴格遞增的序列。索引超出範圍 - Swift

我試圖清除這個錯誤的事情是切換索引從1開始,並重新調整代碼的方式,減少和增加索引邊界1,這可能是我第三次重寫此代碼。但是由於我的知識受到嚴格限制,我無法用我的解決方案獲得很大的創造力。

我現在的問題是索引超出範圍。我確切地知道這意味着什麼,除了我不知道哪一行代碼導致問題以及原因。我非常感謝提示,而不是直接的解決方案,因爲我是初學者,這是一個很好的學習經歷。

任何和所有幫助表示讚賞!如果我可以添加更多的細節這個問題不要猶豫,告訴我! :)

+0

'如果sameSequence [I] chrisz

回答

0

if sameSequence[i]<sameSequence[i+1]您將獲得超出範圍總是

如果sameSequence大小爲10,for將從i=0被調用來i=9(10次)。最後一次迭代將嘗試訪問sameSequence[10],您將遇到越界異常。

您可以通過改變回路解決它for i in 0..<sameSequence.count-1 { },但認爲這可能對你的算法產生影響,你的問題的解決方案