2017-10-12 126 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 { },但认为这可能对你的算法产生影响,你的问题的解决方案