LeetCode--454.四数相加 II(哈希表)

张开发
2026/4/19 21:54:50 15 分钟阅读

分享文章

LeetCode--454.四数相加 II(哈希表)
题目描述给你四个整数数组 nums1、nums2、nums3 和 nums4 数组长度都是 n 请你计算有多少个元组 (i, j, k, l) 能满足0 i, j, k, l nnums1[i] nums2[j] nums3[k] nums4[l] 0示例 1输入nums1 [1,2], nums2 [-2,-1], nums3 [-1,2], nums4 [0,2] 输出2 解释 两个元组如下 1. (0, 0, 0, 1) - nums1[0] nums2[0] nums3[0] nums4[1] 1 (-2) (-1) 2 0 2. (1, 1, 0, 0) - nums1[1] nums2[1] nums3[0] nums4[0] 2 (-1) (-1) 0 0示例 2输入nums1 [0], nums2 [0], nums3 [0], nums4 [0] 输出1提示n nums1.length n nums2.length n nums3.length n nums4.length 1 n 200 -228 nums1[i], nums2[i], nums3[i], nums4[i] 228代码classSolution{publicintfourSumCount(int[]nums1,int[]nums2,int[]nums3,int[]nums4){// 新建map,以 sum为key, count为valueMapInteger,IntegermapnewHashMap();// 初始化返回结果intresult0;// 遍历nums1和nums2求和for(inti:nums1){for(intj:nums2){intsumij;// 若不存在value会返回默认值0intcountmap.getOrDefault(sum,0)1;map.put(sum,count);}}// 遍历nums3和nums4求和for(inti:nums3){for(intj:nums4){intsumij;// 找是否在map中有相反数,若不存在则返回0intcountmap.getOrDefault(0-sum,0);resultcount;}}returnresult;}}

更多文章