java题解LeetCode454.四数相加示例
正文
给你四个整数数组 nums1、nums2、nums3 和 nums4 ,数组长度都是 n ,请你计算有多少个元组 (i, j, k, l) 能满足:
0 <= i, j, k, l < n
nums1[i] + nums2[j] + nums3[k] + nums4[l] == 0
解决问题
将n的四次方转变为n的平方,主要通过按两个两个分组打包实现,此外注意map中记录的是前两个数组中的内容两两相加的值的出现次数,这样做是为了在后面两个数组中寻找时,对于每个匹配的组合,都在总的次数中加上对应值出现次数,这样做是因为该题不去重,每个元组都是独特的,所以都要算上
public int fourSumCount(int[] nums1, int[] nums2, int[] nums3, int[] nums4) {
int n=nums1.length;
int count=0;
Map<Integer,Integer> map=new HashMap<>();
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if(map.containsKey(nums1[i]+nums2[j])){
int temp=map.get(nums1[i]+nums2[j])+1;
map.put(nums1[i]+nums2[j],temp);
}
else{
map.put(nums1[i]+nums2[j],1);
}
}
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
int temp=-(nums4[j]+nums3[i]);
if(map.containsKey(temp)){
count=count+map.get(temp);
}
}
}
return count;
}以上就是java题解LeetCode454.四数相加示例的详细内容,更多关于java LeetCode四数相加的资料请关注脚本之家其它相关文章!
相关文章
SpringBoot中使用 ThreadLocal 进行多线程上下文管理及注意事项小结
本文详细介绍了ThreadLocal的原理、使用场景和示例代码,并在SpringBoot中使用ThreadLocal保存请求中携带的用户信息,ThreadLocal通过为每个线程维护独立的变量副本,解决了线程安全问题,感兴趣的朋友一起看看吧2025-02-02
IDEA导入Springboot项目,注解和pom文件不识别的解决
这篇文章主要介绍了IDEA导入Springboot项目,注解和pom文件不识别的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2023-04-04
tomcat报错:Wrapper cannot find servlet class ...问题解决
这篇文章主要介绍了tomcat报错:Wrapper cannot find servlet class ...问题解决的相关资料,需要的朋友可以参考下2016-11-11


最新评论