我试图在新数组中获取给定数组的重复元素,但我不知道我在哪里被困以及为什么它不起作用。
var arraye: [Int] = []
func fn(list: [Int]) -> [Int] {
for var a = 0; a < list.count; a++ {
for var b = 1; b < list.count; b++ {
if list[a] == list[b] {
if contains(arraye, list[a]) == false {
arraye.append(list[b])
}
}
}
}
return arraye
}
println(fn([1,2,4,3]))
最佳答案
你的算法有一个错误:
您必须在“原始”元素之后开始搜索重复项。因此,您必须将 b
初始化为 a + 1
。
func fn(list: [Int]) -> [Int] {
for var a = 0; a < list.count; a++ {
for var b = a + 1; b < list.count; b++ {
if list[a] == list[b] && !contains(arraye, list[a]) {
arraye.append(list[b])
}
}
}
return arraye
}
println(fn([1, 2, 4, 3, 4, 1, 4]))
打印
[1, 4]
顺便说一句:
行 if list[a] == list[b] {
和 if contains(arraye, list[a]) == false
可以统一,并且 contains(arraye, list[a]) == false
更常见的写法是 !contains(arraye, list[a])
。
关于arrays - 返回数组中重复的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32305368/