int cmp(int** a, int** b)
{
//int* a1 = *(int**)a;
//int* b1 = *(int**)b;
//return a1[0] == b1[0] ? a1[1] - b1[1] : a1[0] - b1[0];
return (*a)[1] - (*b)[1];
}
int eraseOverlapIntervals(int** intervals, int intervalsSize, int* intervalsColSize){
if (intervalsSize == 0) return 0;
qsort(intervals, intervalsSize, sizeof(int*), cmp);
int count = 1;
int end = intervals[0][1];
for (int i=1; i<intervalsSize; i++)
{
// 没有相交的有几个
if (intervals[i][0] >= end) {
count++;
end = intervals[i][1];
}
}
return intervalsSize - count;
}
int* partitionLabels(char * s, int* returnSize){
int hash[26] = {0};
int len = strlen(s);
for (int i=0; i<len; i++)
{
hash[s[i] - 'a'] = i;
}
int* result = (int*)malloc(sizeof(int) * len);
int start = 0, end = 0;
*returnSize = 0;
for (int i=0; i<len; i++)
{
end = fmax(end, hash[s[i] - 'a']);
if (end == i)
{
result[(*returnSize)++] = end - start + 1;
start = end + 1;
}
}
return result;
}
不会