代码随想录算法训练营Day31

合并区间

class Solution {  
    public int[][] merge(int[][] intervals) {  
        List<int[]> res = new LinkedList<>();  
        //按照左边界排序  
        Arrays.sort(intervals, (x, y) -> Integer.compare(x[0], y[0]));  
        //initial start 是最小左边界  
        int start = intervals[0][0];  
        int rightmostRightBound = intervals[0][1];  
        for (int i = 1; i < intervals.length; i++) {  
            //如果左边界大于最大右边界  
            if (intervals[i][0] > rightmostRightBound) {  
                //加入区间 并且更新start  
                res.add(new int[]{start, rightmostRightBound});  
                start = intervals[i][0];  
                rightmostRightBound = intervals[i][1];  
            } else {  
                //更新最大右边界  
                rightmostRightBound = Math.max(rightmostRightBound, intervals[i][1]);  
            }  
        }  
        res.add(new int[]{start, rightmostRightBound});  
        return res.toArray(new int[res.size()][]);  
    }  
}

单调递增的数字

class Solution {  
    public int monotoneIncreasingDigits(int N) {  
        String[] strings = (N + "").split("");  
        int start = strings.length;  
        for (int i = strings.length - 1; i > 0; i--) {  
            if (Integer.parseInt(strings[i]) < Integer.parseInt(strings[i - 1])) {  
                strings[i - 1] = (Integer.parseInt(strings[i - 1]) - 1) + "";  
                start = i;  
            }  
        }  
        for (int i = start; i < strings.length; i++) {  
            strings[i] = "9";  
        }  
        return Integer.parseInt(String.join("",strings));  
    }  
}

监控二叉树

后补!

posted @ 2025-04-28 09:29  Anson_502  阅读(8)  评论(0)    收藏  举报