ARTS 第一周(0608-0614)

Algorithm

题目:三数之和
https://leetcode-cn.com/problems/3sum/

public static List threeSum(int[] nums) {
    List> lists = new ArrayList<>();
    if (nums.length < 3) {
        return lists;
    }

    Arrays.sort(nums);
    if (nums[0] * nums[nums.length - 1] > 0) {
        return lists;
    }

    for(int i = 0; i < nums.length-2; i++) {
        if (i > 0 && nums[i] == nums[i-1]) {
            continue;
        }
        int j = i + 1;
        int k = nums.length - 1;
        while (j < k) {
            int sum = nums[i] + nums[j] + nums[k];
            if (sum == 0) {
                lists.add(Arrays.asList(nums[i], nums[j], nums[k]));
                while (j < k && nums[j] == nums[j + 1]) {
                    j++;
                }
                while (j < k && nums[k] == nums[k - 1]) {
                    k--;
                }
                j++;
                k--;
            } else if (sum > 0) {
                k--;
            } else {
                j++;
            }
        }
    }
    return lists;
}

Review

Timer Mocks
https://jestjs.io/docs/en/timer-mocks
Jest可以使用函数模拟控制时间的推移(变化)。
使用“jest.useFakeTimers();”启用模拟时间变化的计时器函数
多个test方法是,可以使用“beforeEach”

Run All Timers
使用“jest.runAllTimers();”对执行时间进行快进

递归计时器:当在一个计时器中设置新的计时器时,可能出现循环调用
此时使用:jest.runOnlyPendingTimers(): --快进和用尽仅当前挂起的计时器

jest.advanceTimersByTime(msToRun)
快进执行,对msToRun时间范围内的定时器,全部依次执行

Tips

Lambda表达式

public static void main(String[] args) {
    Integer[] ints = {1, 2, 3, 4, 5};
    List list = Arrays.asList(ints);

    // 遍历
    list.forEach((i) -> System.out.println(i));

    // 线程
    new Thread(() -> System.out.println("Hello, World!")).start();
    Runnable runnable = () -> System.out.println("Hello, World! Again");
    runnable.run();

    // 取最大最小值求和
    int mini = list.stream().min((i, j) -> (i - j)).get();
    System.out.println("mini=" + mini);
    int maxi = list.stream().max((i, j) -> (i - j)).get();
    System.out.println("maxi=" + maxi);
    int sum = list.parallelStream().mapToInt(i -> i).sum();
    System.out.println("sum=" + sum);

    // 汇总数据
    IntSummaryStatistics intSummaryStatistics = list.stream().mapToInt(i -> i).summaryStatistics();
    System.out.println("stat min=" + intSummaryStatistics.getMin());
    System.out.println("stat max=" + intSummaryStatistics.getMax());
    System.out.println("stat sum=" + intSummaryStatistics.getSum());
    System.out.println("stat avg=" + intSummaryStatistics.getAverage());
    System.out.println("stat cnt=" + intSummaryStatistics.getCount());

    // 过滤
    list.stream().filter((i) -> ( i > 2) ).forEach((i) -> System.out.print(i + "\t"));
    System.out.println();

    // 前三个
    list.stream().limit(3).forEach((i) -> System.out.print(i + "\t"));
    System.out.println();

    // 拼接字符串
    List list1 = Arrays.asList("a", "b", "c");
    String is = list1.stream().collect(joining("|"));
    System.out.println(is);

    // 转set
    Set set =  list.stream().collect(Collectors.toSet());
    set.forEach((i) -> System.out.print(i + "\t"));
}

Share

Java中String的一些整理
https://www.cnblogs.com/xiaoxi/p/6036701.html

你可能感兴趣的:(ARTS 第一周(0608-0614))