# 第十三周ARTS总结
# Algorithm
37ms | 43.92% Run time
46.6MB | 94.03% Memory
public List<List<Integer>> threeSum(int[] nums) {
List<List<Integer>> triplets = new ArrayList<>();
int len = nums.length;
Arrays.sort(nums);
for (int i = 0; i < len - 2; i++) {
if (i > 0)
while (i < len - 2 && nums[i - 1] == nums[i])
i++; // to exclude duplicates
int j = i + 1;
int k = len - 1;
while (j < k) {
int sum = nums[i] + nums[j] + nums[k];
if (sum == 0) {
triplets.add(new ArrayList<>(Arrays.asList(nums[i], nums[j], nums[k])));
j++;
k--;
while ((j < k) && (nums[j - 1] == nums[j])) // to exclude duplicates
j++;
while ((j < k) && (nums[k] == nums[k + 1])) // to exclude duplicates
k--;
} else if (sum < 0) {
j++; // sum too low
} else {
k--; // sum too high
}
}
}
return triplets;
}
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
27
28
29
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
27
28
29
注:该题参考了solution的解法
# Review
# Tip
RecycleView
如果要设置圆角背景,那么写drawable
的时候圆角需要用radius
定义,不能直接定义上下左右的圆角,否则会无效
# Share
暂无内容
← 第十二周ARTS总结 第十四周ARTS总结 →