leetcode15 感觉写的好啰嗦,老师有没有什么优化建议,自己想不出来🥹
来源:4-4 使用查找表的经典问题 Two Sum

Llizzzc
2023-10-13
public List<List<Integer>> threeSum(int[] nums) {
List<List<Integer>> result = new ArrayList<>();
HashSet<List<Integer>> noRepeat = new HashSet<>();
HashMap<Integer, List<Integer>> record = new HashMap<>();
// 记录nums元素
for (int i = 0; i < nums.length; i ++) {
if (!record.containsKey(nums[i])) {
record.put(nums[i], new ArrayList<>());
}
record.get(nums[i]).add(i);
}
// 搜索三元组
for (int i = 0; i < nums.length - 2; i ++) {
for (int j = i + 1; j < nums.length; j ++) {
int temp = nums[j] + nums[i];
if (record.containsKey(-temp)) {
List<Integer> integers = record.get(-temp);
boolean flag = true;
for (int integer = 0; integer < integers.size(); integer ++) {
if (integers.get(integer) != j && integers.get(integer) != i) {
flag = false;
break;
}
}
// 避免重复
if (!flag) {
ArrayList<Integer> list = new ArrayList<>();
list.add(nums[i]);
list.add(nums[j]);
list.add(-temp);
Collections.sort(list);
if (!noRepeat.contains(list)) {
noRepeat.add(list);
}
}
}
}
}
for (List<Integer> list : noRepeat) {
result.add(list);
}
return result;
}
写回答
1回答
-
liuyubobobo
2025-02-05
可以参考我的代码思路(C++),有问题可以在针对具体的问题点提问:https://github.com/liuyubobobo/Play-Leetcode/tree/master/0001-0500/0015-3Sum/cpp-0015
继续加油!:)
00
相似问题