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