程式語言 - LeetCode - C - 452. Minimum Number of Arrows to Burst Balloons



題目:


解答:

int mysort(const void *pa, const void *pb)
{
    long r = 0;
    const int **a = pa;
    const int **b = pb;

    r = (long)a[0][0] - b[0][0];
    if (r == 0) {
        r = (long)a[0][1] - b[0][1];
    }

    if (r < 0) {
        r = -1;
    }

    if (r > 0) {
        r = 1;
    }

    return r;
}

int findMinArrowShots(int** points, int pointsSize, int* pointsColSize)
{
    int r = pointsSize;
    int cc = 0;
    int last = 0;

    qsort(points, pointsSize, sizeof(int *), mysort);

    for (cc = 1; cc < pointsSize; cc++) {
        if (points[cc][0] <= points[last][1]) {
            r -= 1;
            if (points[cc][1] <= points[last][1]) {
                last = cc;
            }
        }
        else {
            last = cc;
        }
    }

    return r;
}