当前位置: 首页 > article >正文

【重点】【双指针】15. 三数之和

题目
注意:三数之和属于双指针问题,二数之和属于哈希问题。

class Solution {
    public List<List<Integer>> threeSum(int[] nums) {
        List<List<Integer>> res = new ArrayList<>();
        if (nums.length < 3) {
            return res;
        }
        Arrays.sort(nums);
        int i = 0, j, k;
        while (i < nums.length - 2) {
            j = i + 1;
            k = nums.length - 1;
            while (j < k) {
                if (nums[i] + nums[j] + nums[k] == 0) {
                    List<Integer> tmp = new ArrayList<>(Arrays.asList(nums[i], nums[j], nums[k]));
                    res.add(tmp);
                    ++j;
                    --k;
                    while (j < k && nums[j] == nums[j - 1]) {
                        ++j;
                    }
                    while (j < k && nums[k] == nums[k + 1]) {
                        --k;
                    }
                } else if (nums[i] + nums[j] + nums[k] > 0) {
                    --k;
                } else {
                    ++j;
                }
            } 
            ++i;
            while (i < nums.length && nums[i] == nums[i - 1]) {
                ++i;
            }
        }

        return res;
    }
}

http://www.kler.cn/a/155011.html

相关文章:

  • FPGA学习(10)-数码管
  • Shell 脚本中的大小写陷阱:为什么 ${PWD} 而不是 ${pwd}?
  • 缓存与数据库不一致的解决方案:深入理解与实践
  • 免费,WPS Office教育考试专用版
  • Redis - 集群(Cluster)
  • 【Webpack实用指南】如何拆分CSS资源(2)
  • Vue diff 算法探秘:如何实现快速渲染
  • Gson的用法详解
  • 中兴小鲜50 ZTE 畅行50 刷机救砖演示机7543n root 虎贲 展锐 T760 解锁BL
  • 人工智能 - 人脸识别:发展历史、技术全解与实战
  • 开源免费跨平台数据同步工具-Syncthing
  • Unity3D URP 自定义范围的特效热扭曲详解
  • LLM:《第 3 部分》从数学角度评估封闭式LLM的泛化能力
  • 安全SCDN对网站蜘蛛抓取有影响吗,使用SCDN对百度蜘蛛抓取有否好处
  • CentOS7 网络配置
  • Linux的权限(一)
  • Ubuntu22.04无需命令行安装中文输入法
  • C++生成静态库和动态库
  • 智慧用电安全动态监控系统
  • centos7-docker安装与使用
  • 网络虚拟化场景下网络包的发送过程
  • C/C++---------------LeetCode第35. 搜索插入位置
  • C++ day48 打家劫舍
  • 数学建模之典型相关分析
  • Redis--10--Pipeline
  • 乱序学机器学习——主成分分析法PCA