数组中和为0的三个数
程序员文章站
2024-02-02 18:35:16
...
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
public class Test {
static HashSet<ArrayList<Integer>> list=new HashSet<ArrayList<Integer>>();
public static HashSet<ArrayList<Integer>> threeOf0(int[] arr) {
ArrayList<Integer> temp=new ArrayList<>();
if(arr.length<3||arr==null)
return list;
Arrays.sort(arr);
//固定i,遍历j和k
for(int i=0;i<arr.length;i++) {
int j=i+1;//j从i的下一位向后遍历
int k=arr.length-1;//k从数组的最后一位向前遍历
while(j<k) {
int sumTwo=arr[i]+arr[j];
if(sumTwo+arr[k]<0) {
j++;
}else if(sumTwo+arr[k]>0) {
k--;
}else {
temp.add(arr[i]);
temp.add(arr[j]);
temp.add(arr[k]);
list.add(temp);
break;
}
}
temp=new ArrayList<>();
}
return list;
}
public static void main(String[] args) {
int[] arr= {5,4,2,7,-3,-1,6,8,0,-8};
HashSet<ArrayList<Integer>> list=threeOf0(arr);
for(ArrayList<Integer> i:list) {
System.out.print(i+" ");
}
}
}
输出:[-3, -1, 4] [-8, 0, 8]
上一篇: 分解因数(C语言 递归)
推荐阅读
-
hpu寒假训练B-三个数和为0 【循环查找】
-
数组中和为0的三个数
-
java_基础:随机⽣成3个0~9的数, 如果其中三个数相同,或两个数相同,则输出“Win”,否则输出“Lost”, 并输出三个数的组合。
-
寻找三个数的和为0
-
Leetcode:给定一个数组,从其中选取三个数,要求三个数的和必须是0,求出所有这样的组合
-
三个数的和为0
-
洛谷OJP1008在1~9共9个数字中找出三个三位数,使它们的比例为1:2:3
-
给定一个正序的整形数组A和一个数X,判断数组A里面是否存在两个数,他们的和为X;
-
php判断一个数组是否为有序的方法_PHP教程
-
汇编三星题目:一个有符号字数组以0为结束标志,编程求这个数组的最大值、 最小值、平均值