2023年11月25日 星期六

[735] Asteroid Collision

一開始搞錯題目了!!!終於弄懂以後,又把方向(正向跟負向飛行)想的太難!

終於PASS以後又因為想要寫的漂亮 母歸玻
真是奸詐的題目 (吃不到葡萄說葡萄酸XD)
但光是前面想要把每種可能都考慮到的寫法,就會被面試刷掉了吧哈哈哈哈哈(奔入雨中)

/**
* Note: The returned array must be malloced, assume caller calls free().
*/

int* asteroidCollision(int* asteroids, int asteroidsSize, int* returnSize) {
int *stack = calloc (asteroidsSize, sizeof(int));
int head = -1;
for (int i=0; i<asteroidsSize;i++)
{
if (head < 0 || ( (stack[head]<0 || stack[head]>0 && asteroids[i]> 0)))
{
stack[++head]=asteroids[i];
continue;
}

while (head>=0 && (stack[head] > 0))
{
if (abs(stack[head]) > abs(asteroids[i]))
break; //stack remain the same

if (abs(stack[head]) == abs(asteroids[i]))
{
head--; // remove both side
break;
}

if (abs(stack[head]) < abs(asteroids[i]))
{
head--;
if ((head < 0) || stack[head]<0)
{
stack[++head]= asteroids[i];
break;
}
}
}
}
*returnSize = head+1;
return stack;
}

沒有留言:

張貼留言