【发布时间】:2021-11-02 12:09:10
【问题描述】:
我正在尝试将数组的重复元素配对并计数。
当给定数组是:[10, 20, 20, 10, 10, 30, 50, 10, 20] 时,我期望 numberOfPairs 为 3。因为有 2 对 10 和 1 对 20。
我的“if 条件”正在检查当前元素的索引是否是第一个索引。如果不是最后一个索引,则表示当前元素存在重复。所以我给 numberOfPairs 加 1。
对于输入 [10, 20, 20, 10, 10, 30, 50, 10, 20],我的 numberOfPairs 是 2 但应该是 3。 对于输入 [1 1 3 1 2 1 3 3 3 3],myNumberOfPairs 根本不打印?但它应该是 4。
我在这里错过了什么?
func sockMerchant(n: Int, ar: [Int]) -> Int {
// Write your code here
var array = ar
var numberOfPairs = 0
for i in 0..<array.count {
var element = array[i]
let indexOfLastElement = array.lastIndex(of: element)
let indexOfFirstElement = array.firstIndex(of: element)
print("indexOfLastElement is \(indexOfLastElement)")
print("indexOfFirstElement is \(indexOfFirstElement)")
if indexOfFirstElement != indexOfLastElement {
numberOfPairs += 1
array.remove(at: indexOfFirstElement!)
array.remove(at: indexOfLastElement!)
continue
}
return numberOfPairs
}
return numberOfPairs
}
【问题讨论】:
-
这很简单:从一个简单的例子开始,然后调试你的程序。单步执行代码,检查变量。程序在什么时候没有像您想象的那样运行?
标签: ios arrays swift xcode loops