题解 | #牛舍扩建#

牛舍扩建

https://www.nowcoder.com/practice/2bb8208d18344608bc6bb19a78facad9

知识点:贪心 递归

思路:在上一题里加入一个数组就行了

编程语言:java

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param intervals int整型二维数组
     * @param new_interval int整型一维数组
     * @return int整型二维数组
     */
public int[][] insertNewInterval (int[][] intervals, int[] new_interval) {
        // write code here
        ArrayList<int[]> array = new ArrayList<>();
        int [][]intervalss = new int[intervals.length + 1][2];
        for (int i=0;i<intervals.length;i++)
            intervalss[i] = intervals[i];
        intervalss[intervalss.length-1] = new_interval;
        //排序一下,之前的思路都是基于数组中第一个元素从小到大的排序
        Arrays.sort(intervalss, (int[] a, int[] b) -> (a[0] - b[0]));
        int left=intervalss[0][0],right=intervalss[0][1];//左右边界
        for (int i = 1;i<intervalss.length;i++){
            //取出数组
            if(right >=intervalss[i][0]){
                //更新子问题最优解
                //left = intervals[i][0];
                right = Math.max(intervalss[i][1],right);
            }else{
                array.add(new int[]{left,right});
                left = intervalss[i][0];
                right = Math.max(intervalss[i][1],right);
            }
        }
        array.add(new int[]{left,right});
        return array.toArray(new int[0][]);
    }
}

全部评论

相关推荐

犹豫的小狐狸刷了100道题:你是我在牛课上见到的最漂亮的女孩了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务