#define _CRT_SECURE_NO_WARNINGS
#include
#include
int cmp(const void* a, const void* b)
{
return ((*((int**)a))[0] > (*((int**)b))[0]);
}
int findMinArrowShots(int** points, int pointsSize, int* pointsColSize) {
//将points数组作升序排序
qsort(points, pointsSize, sizeof(points[0]), cmp);
int arrowNum = 1;
int i = 1;
for (i = 1; i < pointsSize; i++) {
//若前一个气球与当前气球不重叠,证明需要增加箭的数量
if (points[i][0] > points[i - 1][1])
arrowNum++;
else
//若前一个气球与当前气球重叠,判断并更新最小的x_end
points[i][1] = points[i][1] > points[i - 1][1] ? points[i - 1][1] : points[i][1];
}
return arrowNum;
}
int** points, int pointsSize, int* pointsColSize这三个函数形参,在主函数怎么设置变量传递,
指针很少用,有没有人能在主函数讲解下这些指针怎么设置的
只需要一个二维整数数组points,一个整数pointsSize,一个整型指针pointsColSize
换成代码可以是:
int** points = (int**)malloc(pointsSize * sizeof(int*));
int pointsSize = 1;
int pointsColSize = 1;
int res = findMinArrowShots(points, pointsSize, &pointsColSize);
int * p1, * p2;
或者
int p1[...], p2[...];
findMinArrowShots(&p1, size, &p2);
这个函数是在一个点数组的数组中搜索,points是所有点,pointsColSize表示有几个点数组,pointsSize表示一共有多少个点
不知道你这个问题是否已经解决, 如果还没有解决的话: