题解 | #三数之和#
三数之和
https://www.nowcoder.com/practice/345e2ed5f81d4017bbb8cc6055b0b711
import java.util.*;
public class Solution {
public ArrayList<ArrayList<Integer>> threeSum(int[] num) {
ArrayList<ArrayList<Integer>> ans = new ArrayList<>();
Map<ArrayList, Integer> map = new HashMap<>();
Arrays.sort(num);
for (int i = 0; i < num.length - 2; i++) {
boolean flagJ = false;
for (int j = i + 1; j < num.length - 1; j++) {
boolean flagK = false;
for (int k = j + 1; k < num.length; k++) {
if (num[i] + num[j] + num[k] == 0) {
flagK = true;
flagJ = true;
ArrayList<Integer> temp = new ArrayList<>();
temp.add(num[i]);
temp.add(num[j]);
temp.add(num[k]);
if (!map.containsKey(temp)) {
map.put(temp, 0);
ans.add(temp);
}
} else if (num[i] + num[j] + num[k] > 0) {
break;
} else {
flagK = true;
flagJ = true;
}
}
if (!flagK) {
break;
}
}
if (!flagJ) {
break;
}
}
return ans;
}
}