您现在的位置是:首页 > 正文

LeetCode15——三数之和(排序+双指针)

2024-02-01 05:14:57阅读 2

题目描述

给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组。

注意:

答案中不可以包含重复的三元组。

示例:

给定数组 nums = [-1, 0, 1, 2, -1, -4],

满足要求的三元组集合为:
[
[-1, 0, 1],
[-1, -1, 2]
]

题目分析

可以通过怕徐和双指针将暴力解法O(n^3)的复杂度降为 O(n^2)。

代码

Java代码如下:

class Solution {
    public List<List<Integer>> threeSum(int[] nums) 
    {
        Arrays.sort(nums);
        List<List<Integer>> result = new ArrayList<>();
        for(int k=0;k<nums.length-2;k++)
        {
            if(k>0&&nums[k]==nums[k-1])
            {
                continue;
            }
            int target=-nums[k];
            int i=k+1;
            int j=nums.length-1;
            while(i<j)
            {
                if(nums[i]+nums[j]==target)
                {
                    List<Integer> set = new ArrayList<>();
                    set.add(nums[k]);
                    set.add(nums[i]);
                    set.add(nums[j]);
                    result.add(set);
                    i++;
                    j--;
                    while(i<j&&nums[i]==nums[i-1])
                    {
                        i++;
                    }
                    while(i<j&&nums[j]==nums[j+1])
                    {
                        j--;
                    }
                } else if(nums[i]+nums[j]>target)
                {
                    j--;
                }
                else
                {
                    i++;
                }
            }
        }
        return result;

    }
}

网站文章

  • 使用异步注解调用远程接口Spring Security认证授权不携带Token的问题

    同样项目中如果使用线程池调用远程接口,需要使用DelegatingSecurityContextExecutorService线程池。项目中开启异步注解@EnableAsync。项目中使用异步注解:@Async。

    2024-02-01 05:14:28
  • 腾讯三面面经(前端开发实习生)

    腾讯三面面经(前端开发实习生)我感觉是凉了orz…不管怎么样,菜鸡琳可千万不能气馁啊!!!just do it. 踏实努力学就好了!!总的来说还是很有收获的!流程:腾讯会议视频面(并没有开视频hhh)问题在浏览器输入网址之后有哪些过程,浏览器限制URL长度为多少IE:2083个字符;Firefox:65,536个字符;Safari: 80,000个字符;Opera: 190,...

    2024-02-01 05:14:22
  • 【PTA】5-7 使用同步机制协调线程的执行顺序

    【PTA】5-7 使用同步机制协调线程的执行顺序

    的计算,利用 Java 的同步机制,可以保证线程执行顺序的正确性。下面程序采用多个线程对整数执行。

    2024-02-01 05:14:06
  • ftp作业

    ftp作业

     a) 域的图:b) 你的用户的目录访问权限:c) 你用浏览器或其他软件访问FTP后的结果:

    2024-02-01 05:13:59
  • Linux 常用命令汇总(详细版)

    Linux 常用命令汇总(详细版)

    Linux 的文件系统是采用层级式的树状目录结构,在此结构中的最上层是根目录“/”,然后再次目录下再创建其他的目录。目录结构:以下是对这些目录的解释:less:可以按键盘上下方向键显示上下内容more...

    2024-02-01 05:13:30
  • mac工具

    mac工具

    iStat Menus 6激活密码Email: 982092332@qq.comSN: GAWAE-FCWQ3-P8NYB-C7GF7-NEDRT-Q5DTB-MFZG6-6NEQC-CRMUD-8MZ2K-66SRB-SU8EW-EDLZ9-TGH3S-8SGA参考文章:1、https://www.jianshu.com/p/1345a10331cb

    2024-02-01 05:13:23
  • AFE4400的使用

    AFE4400的使用

    随着人们越来越重视医疗健康,相对应的产品也随之推出。TI就很好的走在前面,对于生理信号采集方面不仅推出了ADS124x系列和ADS129x系列,也推出了集成了光传感器AFE系列。AFE4400 是一款非常适合于脉冲血氧仪应用的完全集成模拟前端 (AFE)。 此器件包含一个具有集成模数转换器 (ADC) 的低噪声接收器通道、一个 LED 发射部件和针对传感器以及 LED 故障检测的诊断功能。

    2024-02-01 05:13:17
  • 学习计划表(长期)

    一:课程学习 数学:1. 高等数学 2. 线性代数 英语:1. 英语四级 2. 英语六级 政治:1. 思修 2. 毛概 3. 近代史 4.马原 5. 时事 专业:1. 信息技术(计算机基础) 2. 自...

    2024-02-01 05:12:48
  • 深度学习deep learning

    深度学习deep learning

    一、简介 深度学习是包含多个隐层的机器学习模型,核心是基于训练的方式,从海量数据中挖掘有用信息,实现分类与预测。 早期的深度学习模型:编码器、循环神经网络、深度置信网络、卷积神经网络 衍生模型:堆叠降...

    2024-02-01 05:12:41
  • mui中的页面传值方法

    1.通过url传值: 父页面: mui.openWindow({ url: xxx.html?date=&#39;+str, }); var thisURL = document.URL;//获取页面...

    2024-02-01 05:12:33