0
点赞
收藏
分享

微信扫一扫

LeetCode 454 四数相加 II -- 使用HashMap做哈希表

北溟有渔夫 2022-01-15 阅读 198

参考文章

思路:

这道题其实跟做的上一道题《两数之和》有点相像,只是视为将前两个数组的所有每对元素的和作为一部分,另外两个数组的所有每对元素的和作为另一部分。在《两数之和》中Map存储的是下标,这道题不需要下标,改为存储这个数在两个数组每对元素的和中出现的次数即可。

本题Java代码

class Solution {
	public int fourSumCount(int[] nums1, int[] nums2, int[] nums3, int[] nums4) {
		Map<Integer, Integer> map = new HashMap<>();
		for (int i : nums1) {
			for (int j : nums2) {
				int tmp = i + j;
				if (map.containsKey(tmp)) {
					map.put(tmp, map.get(tmp) + 1);
				} else {
					map.put(tmp, 1);
				}
			}
		}
		int ans = 0;
		for (int i : nums3) {
			for (int j : nums4) {
				int tmp = 0 - i - j;
				if (map.containsKey(tmp)) {
					ans += map.get(tmp);
				}
			}
		}
		return ans;
	}
}
举报

相关推荐

0 条评论