代码随想录训练营第三十四天|56. 合并区间 、 738.单调递增的数字 / 968.监控二叉树 (可跳过)

合并区间

import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;


public class day34_56_合并区间 {
    public static void main(String[] args) {
        
        

    }
    public int[][] merge(int[][] intervals) {
        //思路是遍历没段的start和end然后根据判断情况去决定是否合并
        List<int[]> res=new LinkedList<>();
        Arrays.sort(intervals, (x, y) -> Integer.compare(x[0], y[0]));
        //还是要先sort一下按照第一个元素进行排序

        if (intervals.length<=1) {
            return intervals;
            
        }
        for(int i=1;i<intervals.length;i++){
            
            if (intervals[i][0]>intervals[i-1][1]) {
                res.add(intervals[i-1]);
                
            }else if (intervals[i][0]<=intervals[i-1][1]) {
                    intervals[i][0]=intervals[i-1][0];
                    if (intervals[i-1][1]>intervals[i][1]) {
                        intervals[i][1]=intervals[i-1][1];
                        
                    }  
            }
            if (i==intervals.length-1) {
                res.add(intervals[i]);
                
            }
        }
        return res.toArray(new int[res.size()][]);

    }
    
    
}

自己的思路有点乱,主要有两点,加入最后一次遍历的元素,还有就是这个区间被上一个区间包括 的情况要考虑进去

单调递增的数字

public class day34_738_单调递增的数字 {
    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));

    }
    
}

逻辑简单实现起来复杂

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值