长期更新,对使用 Java 刷 LeetCode 过程中一些有趣的题的感想和启发。 解题源代码仓库
题目
Given an array nums of n integers, are there elements a, b, c in nums such that a + b + c = 0? Find all unique triplets in the array which gives the sum of zero.
Note:
The solution set must not contain duplicate triplets.
Example:
Given array nums = [-1, 0, 1, 2, -1, -4],
A solution set is: [ [-1, 0, 1], [-1, -1, 2] ]
我的思路
思路如下:
- 现排序;
- 双重循环寻找匹配的数组;
- 找到后先与前一个数组比较,不相同的话就加入
output
。
我的代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
//解决方法
class Solution {
public List<List<Integer>> threeSum(int[] nums){
List<List<Integer>> output = new ArrayList<>();
int length = nums.length;
//排序
Arrays.sort(nums);
//开始处理
for (int i = 0;i < (length - 2);i++) {
for (int j = (i + 1);j < (length - 1);j++) {
for (int k = (j + 1);k < length;k++) {
if (nums[i] + nums[j] + nums[k] == 0) {
List<Integer> list = new ArrayList<>();
list.add(nums[i]);
list.add(nums[j]);
list.add(nums[k]);
if (list != output.get(output.size()-1)) {
output.add(list);
}
}
}
}
}
return output;
}
}
本文作者 Auther:Soptq
本文链接 Link: https://soptq.me/2018/09/23/leetCode15/
版权声明 Copyright: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处。 Content on this site is licensed under the CC BY-NC-SA 4.0 license agreement unless otherwise noted. Attribution required.
发现存在错别字或者事实错误?请麻烦您点击 这里 汇报。谢谢您!