程式語言 - LeetCode - C - 735. Asteroid Collision



參考資訊:
https://www.cnblogs.com/grandyang/p/8035551.html

題目:


解答:

/**
 * Note: The returned array must be malloced, assume caller calls free().
 */
int* asteroidCollision(int* asteroids, int asteroidsSize, int* returnSize)
{
    int i = 0;
    int idx = 0;
    int *r = calloc(10000, sizeof(int));

    for (i = 0; i < asteroidsSize; i++) {
        if (asteroids[i] > 0) {
            r[idx++] = asteroids[i];
            continue;
        }

        if ((idx == 0) || (r[idx - 1] < 0)) {
            r[idx++] = asteroids[i];
            continue;
        }

        if (abs(asteroids[i]) >= r[idx - 1]) {
            if (abs(asteroids[i]) > r[idx - 1]) {
                i -= 1;
            }
            idx -= 1;
        }
    }

    *returnSize = idx;
    return r;
}