2022-03-09 「56. 合并区间」

今日中等题,没做出来,先mark一下:https://leetcode-cn.com/problems/merge-intervals/

四次错误提交,先讲讲思路错在哪了吧,明天继续。
首先题目样例让我误以为,给的数组已经是排好序的了,所以没有做排序。
其次,对于数组长度没有判空。
再次,遍历数组时因为要和相邻数组做对比,下标不注意经常会越界。
最后,只关注了相邻对比,没有关注区间,所以我的左右指针其实是假的,没有起到应有作用。

错误答案,仅用来记录,不要参考:

class Solution {
    public int[][] merge(int[][] intervals) {
        int[][] ans = new int[intervals.length][2];
        int j=0;
        int len = intervals.length;
        Arrays.sort(intervals, new Comparator() {
            @Override
            public int compare(int[] o1, int[] o2) {
                return o1[0] - o2[0];
            }
        });
        for(int i=0;i=intervals[i+1][0] && intervals[left][1]>=intervals[i+1][1])) {
                right = intervals[left][1]>=intervals[i+1][1] ? left : i+1;
                i++;
            }            
            ans[j][0] = intervals[left][0];
            ans[j][1] = intervals[right][1];            
            j++;
        }
        return Arrays.copyOf(ans,j);
    }
}

你可能感兴趣的:(2022-03-09 「56. 合并区间」)