0
我被提出这个问题,我需要在给定的数组(袜子)中找到匹配的数字并打印出在该数组内找到多少袜子。这里是我的代码:更改for-in循环内数组的大小
let numberOfSocks = 9
let socksArray = [10, 20, 20, 10, 10, 30, 50, 10]
func findSocks(numberOfSocks: Int, array: [Int]) {
var arr = array
var uniqueSocks = Array(Set(array))
var matchedPairs = 0
var sockCounter = 0
for i in 0..<uniqueSocks.count { // After the search, remove the element at index
sockCounter = 0
for j in 0..<arr.count {
if uniqueSocks[i] == arr[j] {
sockCounter += 1
if sockCounter % 2 == 0 {
matchedPairs += 1
sockCounter = 0
}
}
}
}
print(matchedPairs)
}
findSocks(numberOfSocks: numberOfSocks, array: socksArray)
首先,我已删除了所有重复阵列中的所以它给了我一个独特的名单袜子,我需要寻找。然而,我想通过删除我已经搜索过的袜子来优化这个算法,我试过arr.remove(at:)
但它给了我一个出界,我有一种感觉,arr.count
未被正确更新。欢迎任何帮助,谢谢!
它可能会帮助你:https://stackoverflow.com/questions/27624331/unique-values-of-array-in-swift –
从集合中删除元素,而循环通过它不是理想的。您可以用更好的时间复杂性尝试不同的字典数据结构。 – Breek