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

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

    • 解法1 HashMap + getOrDefault方法

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

解法1 HashMap + getOrDefault方法

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

创建HashMap:HashMap 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存入hashmap
        for(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;
    }
}  

你可能感兴趣的:(Leetcode,leetcode,散列表,算法,java,职场和发展,数据结构)