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

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

0 <= nums.length <= 3000

−105 <= nums[i] <= 105

来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/3sum 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

函数接口定义:

public static List<List<Integer>> threeSum(int[] nums) 

裁判测试程序样例: 

public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n = sc.nextInt();int[] array = new int[n];for(int i = 0; i <n; i++)array[i] = sc.nextInt();List<List<Integer>> result = threeSum(array);for(int i = 0; i < result.size(); i++){List<Integer> list = result.get(i);for(int j = 0; j < list.size(); j++)System.out.print(list.get(j) + " ");System.out.println();}}
/* 请在这里填写答案 */

输入样例1:

第一行输入数组长度n,第二行输入数组元素,以空格间隔

6
-1 0 1 2 -1 4

输出样例1:

每个三元组一行

-1 -1 2
-1 0 1

输入样例2:

第一行输入数组长度n,第二行输入数组元素,以空格间隔

0

输出样例2:

每个三元组一行


输入样例3:

第一行输入数组长度n,第二行输入数组元素,以空格间隔

1
0

输出样例3:

每个三元组一行

代码如下: 

public static List<List<Integer>> threeSum(int[] nums) {List<List<Integer>> lists = new ArrayList<>();Arrays.sort(nums);int length = nums.length;;for (int i = 0; i < length - 2; i ++) {int start = i + 1;int end = length - 1;while (start < end) {int sum = nums[i] + nums[start] + nums[end];if (sum == 0) {List<Integer> list = new ArrayList<>();list.add(nums[i]);list.add(nums[start]);list.add(nums[end]);lists.add(list);while (start < end && nums[start] == nums[start + 1]) {start ++;}while (start < end && nums[end] == nums[end - 1]) {end --;}while (start < end && nums[i] == nums[i + 1]) {i ++;}start ++;end --;} else if (sum < 0) {start ++;} else if (sum > 0) {end --;}}}return lists;
}

【排序】 给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。(java)相关推荐

  1. 三数之和给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组(GO,PHP)

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

  2. 绝对高效实现! 给你一个包含n个整数的数组nums,判断nums是否存在三个元素a,b,c使得a+b+c =0...

    所有实现代码均使用JAVA letcode上面有个算法题,贴原图 先分析一下: 第一个条件,a+b+c = 0,这个好办,最简单的就是循环三次,把所有情况都过一篇就可得到所有结果, 第二个条件,满足条 ...

  3. 你一个包含n个整数nums,判断nums中是否存在三个元素a,b,c,使得a+b+c=0?

    /* 给你一个包含n个整数nums,判断nums中是否存在三个元素a,b,c,使得a+b+c=0?请你找出所有和为0且不重复的三元组.注意:答案中不可以包含重复的三元组.*/ //1.给数组排序(从小 ...

  4. C语言:对包含10个整数的数组进行如下的操作,从下标为0的元素开始到最后一个元素,依次向前移动一个位置。

    /*对包含10个整数的数组进行如下的操作,从下标为0的元素开始到最后一个元素,依次向前移动一个位置.*/ #include <stdio.h> void main(void) {int a ...

  5. 给出一个包含n个整数的数列,问整数a在数列中的第一次出现是第几个。

    资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 给出一个包含n个整数的数列,问整数a在数列中的第一次出现是第几个. 输入格式 第一行包含一个整数n. 第二行包含n个非负整数,为给定的 ...

  6. /给你一个由 n 个整数组成的数组 nums ,和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], nums[c], nums[

    给你一个由 n 个整数组成的数组 nums ,和一个目标值 target .请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], nums[c], nums[d]] ( ...

  7. 34. 在排序数组中查找元素的第一个和最后一个位置给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标

    34. 在排序数组中查找元素的第一个和最后一个位置 难度中等2012 给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target.请你找出给定目标值在数组中的开始位置和结束位置. 如果 ...

  8. 试题 基础练习 查找整数 (给出一个包含n个整数的数列,问整数a在数列中的第一次出现是第几个。)

    问题描述 给出一个包含n个整数的数列,问整数a在数列中的第一次出现是第几个. 输入格式 第一行包含一个整数n. 第二行包含n个非负整数,为给定的数列,数列中的每个数都不大于10000. 第三行包含一个 ...

  9. 【动态规划】将一个包含m个整数的数组分成n个数组,每个数组的和尽量接近,及其变形(Python实现)

    背景 实际的问题来源于LQA系统的人员分配工作量,有两种方式,一种是 平均分配,一种是按给定比例分配.不需要AC,能得到符合题意的解就算达成目标. 平均分配 一个order订单包含一个xls表格,内含 ...

最新文章

  1. Scala Implicit Conversion
  2. 大数高精运算-----乘法
  3. java实现时钟方法汇总
  4. python做视频抽帧图_Python提取视频中图片的示例(按帧、按秒)
  5. gitlab ProjectMembers
  6. maxvalue mysql自动分区_深入解析MySQL分区(Partition)功能
  7. JSON怎么转成Excel
  8. java 获取身份证前两位对应省份
  9. Log4j2 0day漏洞项目级紧急修复方法
  10. python图片中文字识别
  11. wps office应用计算机等级考试,全国计算机等级考试一级教程:计算机基础及WPS Office应用(2016年版)...
  12. 展览 | 2018届中国国际信息通信展览的所见所闻
  13. 铁路警方启用AI眼镜,当场抓逃犯!外媒惊叹不已!
  14. java 计算百分比_java前后台计算百分比(保留2位小数)
  15. 第二天学习笔记:(MDN HTML学习、web安全策略与常见攻击、语义化)
  16. windows 查看/清除DNS解析记录
  17. 为什么现在开发这么累呢?
  18. 编译原理实验:Java实现SLR(1)语法分析器
  19. 12年时记录的一堆杂事
  20. 综合素质能力测试软件,儿童综合素质体检测评系统

热门文章

  1. 二分法查找 (长沙戴维营教育)
  2. 创建 CAD 文档模板
  3. Supplier接口
  4. 运用Python制作你心目中的完美女神脸!
  5. android常见问题
  6. 蓝桥杯试题:振兴中华(C/C++)
  7. 认购与申购的区别是什么
  8. 【百度飞桨黄埔学院】CTO案头必备|AI技术产业落地的42章经
  9. MD5算法的实现原理
  10. win11系统微软账号登陆错误报错误码0x80190001