分发饼干
https://leetcode-cn.com/problems/assign-cookies/
int compare(const void * a, const void * b);int findContentChildren(int* g, int gSize, int* s, int sSize){qsort(g, gSize, sizeof(int), compare);qsort(s, sSize, sizeof(int), compare);int i = 0, j = 0, count = 0;while(i < gSize && j < sSize){if(s[j] >= g[i]){//能满足count++;j++;i++;}else j++;}return count;}int compare(const void * a, const void * b){const int * m = (const int *)a;const int * n = (const int *)b;if(*m < *n)return - 1;else return 1;}
柠檬水找零
https://leetcode-cn.com/problems/lemonade-change/
bool lemonadeChange(int* bills, int billsSize){
int five = 0;
int ten = 0;
for(int i = 0; i < billsSize; i++){
if(bills[i] == 5)
five++;
else if(bills[i] == 10){
ten++;
if(five < 1)
return false;
five -= 1;
}
else{
if(ten > 0){
ten--;
if(five < 1)
return false;
five -= 1;
}
else{
if(five < 3)
return false;
five -= 3;
}
}
}
return true;
}
无重叠区间
https://leetcode-cn.com/problems/non-overlapping-intervals/
int compare(const void * a, const void * b);
int eraseOverlapIntervals(int** intervals, int intervalsSize, int* intervalsColSize){
qsort(intervals, intervalsSize, sizeof(int *), compare);
int right = intervals[0][1];
int count = 0;
for(int i = 1; i < intervalsSize; i++){
if(intervals[i][0] >= right){
right = intervals[i][1];
}
else count++;
}
return count;
}
int compare(const void * a, const void * b){
int ** m = (int **)a;
int ** n = (int **)b;
if(*(*m + 1) > *(*n + 1))
return 1;
else return -1;
}
用最少数量的箭引爆气球
https://leetcode-cn.com/problems/minimum-number-of-arrows-to-burst-balloons/
int compare(const void * a, const void * b);
int findMinArrowShots(int** points, int pointsSize, int* pointsColSize){
qsort(points, pointsSize, sizeof(int *), compare);
int count = 1;
int i = 0;
while(i < pointsSize){
int j = i;
while(j < pointsSize && points[j][0] <= points[i][1])
j++;
if(j == pointsSize)
return count;
else{
//左边界比箭所在的右边界大,射不到
count++;
i = j;
}
}
return count;
}
int compare(const void * a, const void * b){
const int ** m = (const int **)a;
const int ** n = (const int **)b;
if(*(*m + 1) < *(*n + 1))
return -1;
else return 1;
}
