Algorithm
题目:三数之和
https://leetcode-cn.com/problems/3sum/
public static List threeSum(int[] nums) {
List<List<Integer>> 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<Integer> 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<String> list1 = Arrays.asList("a", "b", "c");
String is = list1.stream().collect(joining("|"));
System.out.println(is);
// 转set
Set<Integer> 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








网友评论