数组
2018-04-08 本文已影响2人
周二可
[ 1,8,2,7,3,6,4,5]写一个算法,把数组中的满足a+b=9的所有组合输出来,并记录有多少个组合
// 思路是固定一个数A,看SUM-A是否在这个数组之中。
// 另外用到了swift中查询、设置字典的复杂度为O(1)。
func combine() {
let array = [1, 8, 2, 7, 3, 6, 4, 5]
// 定义一个字典
var dict = [Int : Int]()
var count = 0
// 遍历这个数组
for (i, num) in array.enumerated() {
// 如果字典中有目标值减去当前值,这说明之前的遍历中一定有一个数与当前值之和等于目标值
if dict[9 - num] != nil {
print("\(num),\(9 - num)")
count += 1
}
// 以当前数为key,当前索引为值存入字典
dict[num] = i
}
print(count)
}
combine()