区间合并,java箭头函数,lambda表达式
合并重叠的区间:
public int[][] merge(int[][] intervals) { // 先按照区间起始位置排序 Arrays.sort(intervals, (v1, v2) -> v1[0] - v2[0]); // 遍历区间 int[][] res = new int[intervals.length][2]; int idx = -1; for (int[] interval: intervals) { // 如果结果数组是空的,或者当前区间的起始位置 > 结果数组中最后区间的终止位置, // 则不合并,直接将当前区间加入结果数组。 if (idx == -1 || interval[0] > res[idx][1]) { res[++idx] = interval; } else { // 反之将当前区间合并至结果数组的最后区间 res[idx][1] = Math.max(res[idx][1], interval[1]); } } return Arrays.copyOf(res, idx + 1); }
箭头函数:
// 1. 不需要参数,返回值为 5 () -> 5 // 2. 接收一个参数(数字类型),返回其2倍的值 x -> 2 * x // 3. 接受2个参数(数字),并返回他们的差值 (x, y) -> x – y // 4. 接收2个int型整数,返回他们的和 (int x, int y) -> x + y // 5. 接受一个 string 对象,并在控制台打印,不返回任何值(看起来像是返回void) (String s) -> System.out.print(s)