索引超出范围 - Swift
问题描述:
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,这可能是我第三次重写此代码。但是由于我的知识受到严格限制,我无法用我的解决方案获得很大的创造力。
我现在的问题是索引超出范围。我确切地知道这意味着什么,除了我不知道哪一行代码导致问题以及原因。我非常感谢提示,而不是直接的解决方案,因为我是初学者,这是一个很好的学习经历。
任何和所有帮助表示赞赏!如果我可以添加更多的细节这个问题不要犹豫,告诉我! :)
答
在if sameSequence[i]<sameSequence[i+1]
您将获得超出范围总是
如果sameSequence
大小为10,for
将从i=0
被调用来i=9
(10次)。最后一次迭代将尝试访问sameSequence[10]
,您将遇到越界异常。
您可以通过改变回路解决它for i in 0..<sameSequence.count-1 { }
,但认为这可能对你的算法产生影响,你的问题的解决方案
'如果sameSequence [I]
chrisz