Merge interval [greedy algorithm]

  1. Merge intervals
    use the array intervals to represent a set of several intervals, where a single interval is intervals[i] = [starti, endi]. Please merge all overlapping intervals and return an array of non-overlapping intervals that exactly covers all intervals in the input.
    Insert image description here
class Solution {
    
    
    public int[][] merge(int[][] intervals) {
    
    
        List<int[]> res = new ArrayList<>();
        Arrays.sort(intervals, (a, b) -> a[0] - b[0]);

        res.add(intervals[0]);
        for (int i = 1; i < intervals.length; i++) {
    
    
            int[] cur = intervals[i];
            int[] pre = res.get(res.size() - 1);//res里的最后一个元素
            
            if (cur[0] > pre[1]) {
    
    
                res.add(cur);
            } else {
    
    
                pre[1] = Math.max(cur[1], pre[1]);//  !!  取最大的右边界
            }
        }
        return res.toArray(new int[res.size()][]);//将集合(ArrayList动态数组)转化为二维数组
    }
}

Guess you like

Origin blog.csdn.net/weixin_47004707/article/details/132629809