leetcode刷题日记——插入区间

[ 题目描述 ]:
在这里插入图片描述
[ 思路 ]:

  • intervals 有序,需要将一个新的范围插入,然后进行整合
  • 方法一,将新的范围插入原 intervals 区间,然后使用 56 题的合并区间函数直接解决
  • 方法二, 找出能够包容 newIntervals 的区间进行合并,与 newIntervals 不相交的范围直接插入到 ans 中
  • 运行如下
    在这里插入图片描述
int** insert(int** intervals, int intervalsSize, int* intervalsColSize, int* newInterval, int newIntervalSize, int* returnSize, int** returnColumnSizes) {
    int** res=(int**)malloc(sizeof(int*) * (intervalsSize + 1));
    *returnColumnSizes=(int*)malloc(sizeof(int) * (intervalsSize + 1));
    int count=0;
    int i=0;
    while (i < intervalsSize && intervals[i][1] < newInterval[0]) {
        res[count] = (int*)malloc(sizeof(int) * 2);
        res[count][0]=intervals[i][0];
        res[count][1]=intervals[i][1];
        (*returnColumnSizes)[count++]=2;
        i++;
    }
    while (i < intervalsSize && intervals[i][0] <= newInterval[1]) {
        newInterval[0]=(newInterval[0] < intervals[i][0]) ? newInterval[0] : intervals[i][0];
        newInterval[1]=(newInterval[1] > intervals[i][1]) ? newInterval[1] : intervals[i][1];
        i++;
    }
    res[count]=(int*)malloc(sizeof(int) * 2);
    res[count][0]=newInterval[0];
    res[count][1]=newInterval[1];
    (*returnColumnSizes)[count++] = 2;
    while (i < intervalsSize) {
        res[count]=(int*)malloc(sizeof(int) * 2);
        res[count][0]=intervals[i][0];
        res[count][1]=intervals[i][1];
        (*returnColumnSizes)[count++]=2;
        i++;
    }
    *returnSize=count;
    return res;
}

[ 官方题解 ]:

  • 一、模拟:具体思路同上
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值