arrays - 如何将数组的每个元素与其他元素进行比较?
问题描述
我需要在数组中找到对,我想通过将 arr[i] 与其他从 arr[i+1] 开始的比较来做到这一点,所以我不会两次检查相同的值,但我做不到。这是我尝试过的
func findPairs(_ ar: [Int]) -> Int {
var pairs = 0
for i in 0..<ar.count {
var k = i + 1
for k in 0..<ar.count {
if ar[i] == ar[k] {
pairs += 1
}
}
}
return pairs/2
}
更新澄清,在我的例子中,它是在数组 [1,2,3,1,2,3,4,5,1] 中给出的,我们有 3 对 [1,1] [2,2] [ 3,3]
解决方案
您可能需要i + 1
在内部循环中用作起始索引,如下所示:
func findPairs(_ ar: [Int]) -> Int {
var pairs = 0
for i in 0..<ar.count {
let m = i + 1
for k in m..<ar.count {
if ar[i] == ar[k] {
pairs += 1
}
}
}
return pairs
}
此外,您可以使用另一个数组来存储对的索引,这样您就不会对另一对使用相同的元素:
func findPairs(_ ar: [Int]) -> Int {
var pairs = 0
var pairIndexes = [Int]()
for i in 0..<ar.count where !pairIndexes.contains(i) {
let m = i + 1
for k in m..<ar.count where !pairIndexes.contains(k) {
if ar[i] == ar[k] {
pairs += 1
pairIndexes.append(contentsOf: [i, k])
break
}
}
}
return pairs
}
推荐阅读
- spring-boot - 在 Spring Boot 中启用 JMX
- r - 使用R编程循环多个pdf并转换为多个excel
- react-native - 安装 '@babel/preset-env' 后的错误
- ios - 如何在 Swift 的 CollectionView 中显示本地化的星期几?iOS
- python - 使用 python 脚本在同一选项卡中打开 HTML 文件
- linux - 如何在我的文件夹中搜索 .txt 的数量
- javascript - 在 JQuery 中加载时闪烁的图像
- php - php电报机器人发送带有@问题的文本
- django - django 多用户请求(a,b 并发请求)
- variables - 如何在 Elisp defmacro 中使用局部变量?