算法将来跳槽用

数组

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()

上一篇下一篇

猜你喜欢

热点阅读