在Swift 4中从数组中删除元素时出现运行时错误
我编写这个简单的算法是为了从输入数组中删除重复的值,但是我从数组中删除元素的那一行出现了运行时错误,错误发生在这一行在Swift 4中从数组中删除元素时出现运行时错误,swift,Swift,我编写这个简单的算法是为了从输入数组中删除重复的值,但是我从数组中删除元素的那一行出现了运行时错误,错误发生在这一行array.remove(at:I)。我正在使用Swift 4的代码对 func unique(_ arr:[Int]) -> [Int] { var array = arr var uniqueSet = Set<Int>() for i in 0 ..< array.count { if uniqueSet.contai
array.remove(at:I)
。我正在使用Swift 4的代码对
func unique(_ arr:[Int]) -> [Int] {
var array = arr
var uniqueSet = Set<Int>()
for i in 0 ..< array.count {
if uniqueSet.contains(array[i]) {
print("remove \(arr[i]) for i \(i) from array")
array.remove(at: i)
} else {
print("insert \(arr[i]) into set")
uniqueSet.insert(array[i])
}
}
return array
}
print(unique([1, 2, 4, 4, 5, 6]))
func unique(arr:[Int])->[Int]{
var数组=arr
var uniqueSet=Set()
对于0中的i..
您的主要问题是在数组中循环时插入和删除,这将使它崩溃或永远循环
没必要,你可以
let dupArr = [1, 2, 4, 4, 5, 6]
let result = Set(dupArr).sorted() // [1, 2, 4, 5, 6]
如果你想手动的话也可以
func unique(_ arr:[Int]) -> [Int] {
var result = [Int]()
for item in arr {
if !result.contains(item) {
result.append(item)
}
}
return result
}
仅供参考-这是使用调试器的好机会。逐行检查代码,查看崩溃时
i
的值和array
的值。想想在循环过程中发生了什么。