数组

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容