题目

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

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

示例:

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

满足要求的三元组集合为:

[

[-1, 0, 1],

[-1, -1, 2]

]

来源:力扣(LeetCode)

链接:https://leetcode-cn.com/problems/3sum

著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

题解

  • 思路:升序排序,遍历操作数1(当它<=0),

    {用双指针l、r遍历右侧,当sum=0,放入集合;当sum>0,r--; 当sum<0,l++

  • 特判:数组长度小于3

  • 注意:对三个操作数的去重

相关

Arrays.sort(arr[]); //对原数组排序

Arrays.asList(elm1,elm2,elm3...) //return new ArrayList(elm1,elm2,elm3..); //返回承装这些元素的ArrayList

代码

class Solution {
public List<List<Integer>> threeSum(int[] nums) {
List<List<Integer>> ansList= new LinkedList<>();
Arrays.sort(nums); for(int i=0;i<nums.length-2;++i){ //操作数1
if(i!=0&&nums[i]==nums[i-1]){ //去重
continue;
} int l=i+1,r=nums.length-1; //操作数2、3
while(l<r){
int sum=nums[i]+nums[l]+nums[r];
if(sum==0){
ansList.add(Arrays.asList(nums[i],nums[l],nums[r]));
while(l+1<r&&nums[l+1]==nums[l]){l++;} //去重
while(r-1>l&&nums[r-1]==nums[r]){r--;} //去重
l++;
r--;
}else if(sum<0){
l++;
}else{
r--;
}
}
}
return ansList;
}
}

[LeetCode]15. 三数之和(数组)(双指针)的更多相关文章

  1. Java实现 LeetCode 15 三数之和

    15. 三数之和 给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组. 注意:答案中不可以 ...

  2. LeetCode 15. 三数之和(3Sum)

    15. 三数之和 15. 3Sum 题目描述 Given an array nums of n integers, are there elements a, b, c in nums such th ...

  3. LeetCode——15. 三数之和

    给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组. 注意:答案中不可以包含重复的三元组. ...

  4. LeetCode 15. 三数之和(3Sum)

    题目描述 给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组. 注意:答案中不可以包含重复 ...

  5. [Leetcode 15]三数之和 3 Sum

    [题目] Given an array nums of n integers, are there elements a, b, c in nums such that a + b + c = 0? ...

  6. [LeetCode] 15. 三数之和

    题目链接:https://leetcode-cn.com/problems/3sum/ 题目描述: 给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a ...

  7. LeetCode:三数之和【15】

    LeetCode:三数之和[15] 题目描述 给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的 ...

  8. 代码随想录第七天| 454.四数相加II、383. 赎金信 、15. 三数之和 、18. 四数之和

    第一题454.四数相加II 给你四个整数数组 nums1.nums2.nums3 和 nums4 ,数组长度都是 n ,请你计算有多少个元组 (i, j, k, l) 能满足: 0 <= i, ...

  9. 【LeetCode】三数之和【排序,固定一个数,然后双指针寻找另外两个数】

    给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组. 注意:答案中不可以包含重复的三元组. ...

随机推荐

  1. python数据类型分类(可变(不可变)数据类型)

    一:python数据类型的分类: 可变(不可哈希)的数据类型: list 列表 dict 字典 set 集合 不可变(可哈希)的数据类型: str 字符串 bool 布尔型 int 整型 tuple ...

  2. 使用分区挂载 ftp 目录

    ftp挂载分区上去后无法识别的问题困扰了我好几天,今天有时间把它研究了一下,拿出来与大家分享一下. ftp目录挂载分区前与挂载分区后的区别[root@localhost ~]# ls -Zd /var ...

  3. zookeeper基本配置以及一些坑

    配置 1. 解压安装包:tar zxvf zookeeper-3.4.14.tar.gz 2. 修改zookeeper配置: #Master cd zookeeper-3.4.14 #创建日志文件夹及 ...

  4. 【MySQL】面试官问我:MySQL如何实现无数据插入,有数据更新?我是这样回答的!

    写在前面 马上就是金九银十的跳槽黄金期了,很多读者都开始出去面试了.这不,又一名读者出去面试被面试官问了一个MySQL的问题:向MySQL中插入数据,如何实现MySQL中没有当前id标识的数据时插入数 ...

  5. 【转】C# 利用反射根据类名创建类的实例对象

    原文地址:https://www.cnblogs.com/feiyuhuo/p/5793606.html “反射”其实就是利用程序集的元数据信息. 反射可以有很多方法,编写程序时请先导入 System ...

  6. Java中解析wav音频文件信息:音频声道数,采样频率,采样位数、声音尺寸

    前言:请各大网友尊重本人原创知识分享,谨记本人博客:南国以南i 音频解析方法: public static int toInt(byte[] b) { return ((b[3] << 2 ...

  7. 3个必备cookie实用方法

    今天跟大家介绍一下三种cookie的使用方法,selenium提供了我们add_cookie()方法来跳过验证码直接登录的方法.我们现在以博客园登录为例,都知道现在博客园登录要拼图验证. 先在网页打开 ...

  8. PJSIP开发指南

    一.通用设计 1.1   架构 1.1.1        通信图 下面的图展示了SIP消息在PJSIP组件间从后端到前端如何传递的. 1.1.2        类图 下面的图显示类视图 1.2   E ...

  9. MES系统与喷涂设备软件基于文本文件的数据对接方案

    产品在生产过程中除了记录产品本身的一些数据信息,往往还需要记录下生产设备的一些参数和状态,这也是MES系统的一个重要功能.客户的药物支架产品,需要用到微量药物喷涂设备,客户需要MES系统能完整记录下每 ...

  10. Event loop详解(包含Node端)

    Event loop事件循环,是一个执行模型.不同的浏览器以及Nodejs里的具体实现是不一样的. 一,浏览器端: HTML5规范里有明确定义,简单的说: 1,JS是单线程的,执行的时候在一条主栈上: ...