56. Merge Intervals

https://leetcode.com/problems/merge-intervals/description/

class Solution {
    public int[][] merge(int[][] intervals) {
        int n = intervals.length;
        List<int[]> arr = new ArrayList<>();
        Arrays.sort(intervals, (int[] i1, int[] i2) -> {
            if (i1[0] == i2[0]) {
                return i1[1] - i2[1]; 
            }
            return i1[0] - i2[0];
        });
        int[] cur = intervals[0];
        for (int i = 1; i < n; i++) {
            if (cur[1] >= intervals[i][0]) {
                cur[1] = Math.max(cur[1], intervals[i][1]);
            } else {
                arr.add(cur);
                cur = intervals[i];
            }
        }
        // end = Math.max(end, intervals[n-1][1]);
        //ๆœ€ๅŽไธ€ไธชcurๆ— ่ฎบๅฆ‚ไฝ•้ƒฝ่ฆๅŠ ่ฟ›ๅŽป
        arr.add(cur);
        int[][] ans = new int[arr.size()][2];
        for (int i = 0; i < arr.size(); i++) {
            ans[i][0] = arr.get(i)[0];
            ans[i][1] = arr.get(i)[1];
        }
        return ans;
    }
}

Last updated