Leetcode 454 四数相加II(哈希表 + getOrDefault方法用于获取Map中指定键的值,如果键不存在,则返回一个默认值)

news/2025/3/15 22:50:45/

Leetcode 454 四数相加II(哈希表)

    • 解法1 HashMap + getOrDefault方法

在这里插入图片描述

解法1 HashMap + getOrDefault方法

【HashMap】
【⭐️HashMap常用操作】

创建HashMap:HashMap<Integer, Integer> hash = new HashMap<>();
向HashMap添加元素:put(key, value)
根据key取value:get(key)
判断哈希表中有无key:containsKey(key)
判断哈希表中有无value:containsValue(value)
移除哈希表中的键值对:remove(key)
返回键值对数量:size()
⭐️key是要获取值的键,defaultValue是键不存在时返回的默认值:getOrDefault(key, defaultValue)

【for循环遍历数组】_增强型for循环
for(int num1:nums1){}

【思路】
遍历nums1和nums2 将求和以及数量分别作为key和value存入hashmap
遍历nums3和nums4 如果0-(nums3+nums4) 在hashmap中,则count取出来备用 ,满足就count不断累加

时间复杂度O(N)
空间复杂度O(N)

import java.util.HashMap;
class Solution {public int fourSumCount(int[] nums1, int[] nums2, int[] nums3, int[] nums4) {HashMap<Integer, Integer> hashmap = new HashMap<>();int i = 0;int count = 0;// 遍历nums1和nums2 将求和以及数量作为key和value存入hashmapfor(int num1:nums1){for(int num2:nums2){// getOrDefault 用于获取Map中指定键的值,如果键不存在,则返回一个默认值hashmap.put(num1+num2, hashmap.getOrDefault(num1+num2, 0)+1);}}// 遍历nums3和nums4 如果0-(nums3+nums4) 在hashmap中,则count取出来备用 // 满足就count不断累加for(int num3:nums3){for(int num4:nums4){if(hashmap.containsKey(0-(num3+num4))){count += hashmap.get(0-(num3+num4));} }}return count;}
}  

http://www.ppmy.cn/news/1172916.html

相关文章

【3D 图像分割】基于 Pytorch 的 VNet 3D 图像分割2(基础数据流篇)

构建pytorch训练模型读取的数据,是有模版可以参考的,是有套路的,这点相信使用过的人都知道。我也会给出一个套路的模版,方便学习和查询。 同时,也可以先去参考学习之前的一篇较为简单的3D分类任务的数据构建方法,链接在这里:【3D图像分类】基于Pytorch的3D立体图像分类…

Promise笔记-同步回调-异步回调-JS中的异常error处理-Promis的理解和使用-基本使用-链式调用-七个关键问题

Promise笔记 1. 预备知识1.1 实例对象与函数对象1.2 两种类型的回调函数1. 同步回调2. 异步回调 1.3 JS中的异常error处理1. 错误的类型2. 错误处理&#xff08;捕获与抛出&#xff09;3. 错误对象 2.Promise的理解和使用2.1 Promise是什么1.理解Promise2.Promise 的状态3. Pro…

git简介和指令

git是一个开源的的分布式版本控制系统&#xff0c;用于高效的管理各种大小项目和文件 用途&#xff1a;防止代码丢失&#xff0c;做备份 项目的版本管理和控制&#xff0c;可以通过设置节点进行跳转 建立各自的开发环境分支&#xff0c;互不影响&#xff0c;方便合并 在多终端开…

字符串逆序(递归实现)

字符串逆序&#xff08;递归实现&#xff09; 编写一个函数 reverse_string(char* string)&#xff08;递归实现&#xff09; 实现&#xff1a;将参数字符串中的字符反向排列&#xff0c;不是逆序打印。 要求&#xff1a;不能使用C函数库中的字符串操作函数。 比如 : char arr[…

Web APIs——事件监听以及案例

1、事件监听 什么是事件&#xff1f; 事件是在编程时系统内发生的动作或者发生的事情 比如用户在网页上单击一个按钮 什么是事件监听&#xff1f; 就是让程序检测是否有事件产生&#xff0c;一旦有事件触发&#xff0c;就立即调用一个函数做出响应&#xff0c;也称为绑定事…

【C++】二叉树进阶 -- 详解

一、二叉搜索树概念 二叉搜索树 又称二叉排序树&#xff0c;它或者是一棵空树&#xff0c;或者是具有以下性质的二叉树&#xff1a; 若它的左子树不为空&#xff0c;则左子树上所有节点的值都小于根节点的值 若它的右子树不为空&#xff0c;则右子树上所有节点的值都大于根节点…

Spring Security—OAuth2 客户端认证和授权

一、认证—JWT Bearer 关于 JWT Bearer 客户端认证的进一步详情&#xff0c;请参考OAuth 2.0客户端认证和授权许可的 JSON Web Token (JWT)简介。 JWT Bearer 客户端认证的默认实现是 NimbusJwtClientAuthenticationParametersConverter&#xff0c;它是一个 Converter&#…

Golang 中 Error 的设计及最佳实践

如果你对于 Go 的 Error 设计不太熟悉也不习惯&#xff0c;为什么许多接口都需要返回 error 接口类型的值呢&#xff1f;什么时候该处理 error&#xff0c;什么时候该抛出 error&#xff0c;什么时候又该忽略 error &#xff1f;Go 设计者又为什么要这样设计 error 呢&#xff…