代码随想录二刷day07

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • [一、力扣454. 四数相加 II](#一、力扣454. 四数相加 II)
  • [二、力扣383. 赎金信](#二、力扣383. 赎金信)
  • [三、力扣15. 三数之和](#三、力扣15. 三数之和)
  • [四、力扣18. 四数之和](#四、力扣18. 四数之和)

前言

提示:这里可以添加本文要记录的大概内容:


提示:以下是本篇文章正文内容,下面案例可供参考

一、力扣454. 四数相加 II

java 复制代码
class Solution {
    public int fourSumCount(int[] nums1, int[] nums2, int[] nums3, int[] nums4) {
        Map<Integer, Integer> map = new HashMap<>();
        int res = 0;
        for(int i: nums1){
            for(int j : nums2){
                int sum = i + j;
                map.put(sum, map.getOrDefault(sum, 0) + 1);
            }
        }
        for(int i : nums3){
            for(int j : nums4){
                res += map.getOrDefault(0-i - j, 0);
            }
        }
        return res;
    }
}

二、力扣383. 赎金信

java 复制代码
class Solution {
    public boolean canConstruct(String ransomNote, String magazine) {
        int[] arr = new int[27];
        for(int i = 0; i < ransomNote.length(); i ++){
            arr[ransomNote.charAt(i) - 'a'] ++;
        }
        for(int i = 0; i < magazine.length(); i ++){
            arr[magazine.charAt(i) - 'a'] --;
        }
        for(int i : arr){
            if(i > 0){
                return false;
            }
        }
        return true;
    }
}

三、力扣15. 三数之和

java 复制代码
class Solution {
    public List<List<Integer>> threeSum(int[] nums) {
        List<List<Integer>> res = new ArrayList<>();
        Arrays.sort(nums);
        for(int i = 0; i < nums.length-2;){
            if(nums[i] > 0){
                return res;
            }
            int left = i+1, right = nums.length -1;
            while(left < right){
                int sum = nums[i] + nums[left] + nums[right];
                if(sum > 0){
                    right --;
                }else if(sum < 0){
                    left ++;
                }else{
                    res.add(Arrays.asList(nums[i], nums[left], nums[right]));
                    while(left < right && nums[left] == nums[left + 1])left ++;
                    while(left < right && nums[right] == nums[right - 1]) right --;
                    left ++;
                    right --;
                }
            }
            while(nums[i] == nums[i+1] && i < nums.length-2)i ++;i ++;
        }
        return res;
    }
}

四、力扣18. 四数之和

java 复制代码
class Solution {
    public List<List<Integer>> fourSum(int[] nums, int target) {
        List<List<Integer>> res = new ArrayList<>();
        if(nums.length <= 3){
            return res;
        }
        Arrays.sort(nums);
        for(int i = 0; i < nums.length -3;){
            if(target < 0 && nums[i]>0){
                return res;
            }
            for(int j = i + 1; j < nums.length - 2; ){
                int left = j + 1, right = nums.length - 1;
                while(left < right){
                    int sum = nums[i] + nums[j] + nums[left] + nums[right];
                    if(sum > target){
                        right --;
                    }else if(sum < target){
                        left ++;
                    }else{
                        res.add(Arrays.asList(nums[i], nums[j], nums[left], nums[right]));
                        while(left < right && nums[left] == nums[left+1])left++;
                        while(left < right && nums[right] == nums[right-1])right--;
                        left ++;
                        right --;
                    }
                }
                while(j < nums.length-2 && nums[j] == nums[j + 1])j ++; j ++;
            }
            while(i < nums.length-3 && nums[i] == nums[i+1])i ++; i ++;
        }
        return res;
    }
}
相关推荐
卡尔特斯1 小时前
Android Kotlin 项目代理配置【详细步骤(可选)】
android·java·kotlin
白鲸开源1 小时前
Ubuntu 22 下 DolphinScheduler 3.x 伪集群部署实录
java·ubuntu·开源
ytadpole2 小时前
Java 25 新特性 更简洁、更高效、更现代
java·后端
纪莫2 小时前
A公司一面:类加载的过程是怎么样的? 双亲委派的优点和缺点? 产生fullGC的情况有哪些? spring的动态代理有哪些?区别是什么? 如何排查CPU使用率过高?
java·java面试⑧股
JavaGuide3 小时前
JDK 25(长期支持版) 发布,新特性解读!
java·后端
用户3721574261353 小时前
Java 轻松批量替换 Word 文档文字内容
java
白鲸开源3 小时前
教你数分钟内创建并运行一个 DolphinScheduler Workflow!
java
CoovallyAIHub3 小时前
中科大DSAI Lab团队多篇论文入选ICCV 2025,推动三维视觉与泛化感知技术突破
深度学习·算法·计算机视觉
Java中文社群3 小时前
有点意思!Java8后最有用新特性排行榜!
java·后端·面试
代码匠心4 小时前
从零开始学Flink:数据源
java·大数据·后端·flink