今天学到了多维数组排序代码写法
int cmp(int** a, int** b) {
return (*a)[1] - (*b)[1];
}
int eraseOverlapIntervals(int** intervals, int intervalsSize, int* intervalsColSize) {
//首先排除数组为空的特殊情况
if (intervalsSize == 0) {
return 0;
}
//在内部将区间左右端排序
qsort(intervals, intervalsSize, sizeof(int*), cmp);
//从第一个区间开始让区间最大值为right
int right = intervals[0][1];
int finish = 1;
//从下一个区间开始,看区间最小值是否比上一区间最大值大
//如果大,则可看作区间合并,将区间最大值扩大为该区间最大值,并进行计数
//如果有区间重合,结束程序,返回重合区间个数
for (int i = 1; i < intervalsSize; ++i) {
if (intervals[i][0] >= right) {
finish++;
right = intervals[i][1];
}
}
return intervalsSize - finish;
}