刷题笔记day07-哈希表part03

454. 四数相加 II

func fourSumCount(nums1 []int, nums2 []int, nums3 []int, nums4 []int) int {
    // 有一个n^2的算法,很巧妙
    // 首先将 nums1+nums2 的值入栈
    // 然后在双层遍历 nums3和nums4
    var result int = 0
    table := map[int]int {}
    for _, value1 := range nums1 {
        for _, value2 := range nums2 {
            table[value1+value2]++
        }
    }
    // 遍历 nums3和nums4
    for _, value1 := range nums3 {
        for _, value2 := range nums4 {
            // value + value1+value2=0
            if _, ok := table[-value1-value2]; ok {
                result += table[-value1-value2]
            }
        }
    }

    return result

}

你可能感兴趣的:(笔记,散列表,数据结构)