作者:
JIWP (JIWP)
2024-03-19 15:53:20※ 引述《NCKUEECS (小惠我婆)》之銘言:
: ※ 引述《JIWP (神楽めあ的錢包)》之銘言:
: : 57. Insert Interval
: : 給一個array:intervals;intervals[i]=[start_i,end_i]
: : intervals是照這start_i的大小由小排到大的
: : 並且intervals中的元素沒有重疊
: : 給一個newInterval要插入intervals中,請回傳新的intervals
: 花點數補交作業
: 用C督老半天
: 打不贏就加入C++
: 好爽喔malloc跟**都去死吧
C code給你
/**
* Return an array of arrays of size *returnSize.
* The sizes of the arrays are returned as *returnColumnSizes array.
* Note: Both returned array and *columnSizes array must be malloced, assume caller calls free().
*/
/**
* Return an array of arrays of size *returnSize.
* The sizes of the arrays are returned as *returnColumnSizes array.
* Note: Both returned array and *columnSizes array must be malloced, assume caller calls free().
*/
int** insert(int** intervals, int intervalsSize, int* intervalsColSize, int* newInterval, int newIntervalSize, int* returnSize, int** returnColumnSizes) {
int start=newInterval[0],end=newInterval[1],first=0,last=intervalsSize-1, **ans ,k=0;
ans=(int**)malloc(sizeof(int*)*(intervalsSize+1));
*returnColumnSizes=(int*)malloc(sizeof(int)*(intervalsSize+1));
bool hasinsert=false;
for (int i=0;i<intervalsSize;i++){
if (start > intervals[i][1]){
(*returnColumnSizes)[k]=2;
ans[k]=(int*)malloc(sizeof(int)*2);
ans[k][0]=intervals[i][0];
ans[k][1]=intervals[i][1];
k++;
}else if(end < intervals[i][0]){
if (!hasinsert){
(*returnColumnSizes)[k]=2;
ans[k]=(int*)malloc(sizeof(int)*2);
ans[k][0]=start;
ans[k][1]=end;
k++;
hasinsert=true;
}
(*returnColumnSizes)[k]=2;
ans[k]=(int*)malloc(sizeof(int)*2);
ans[k][0]=intervals[i][0];
ans[k][1]=intervals[i][1];
k++;
}else{
if (intervals[i][0] < start){
start=intervals[i][0];
}
if (intervals[i][1] > end){
end=intervals[i][1];
}
}
}
if (!hasinsert){
(*returnColumnSizes)[k]=2;
ans[k]=(int*)malloc(sizeof(int)*2);
ans[k][0]=start;
ans[k][1]=end;
k++;
}
*returnSize=k;
return ans;
}