# 第十三周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

注:该题参考了solution的解法

# Review

# Tip

  • RecycleView如果要设置圆角背景,那么写drawable的时候圆角需要用radius定义,不能直接定义上下左右的圆角,否则会无效

# Share

暂无内容

更新时间: 10/20/2022, 7:04:01 AM