leetcode 735 行星碰撞

2022-10-02 15:06:12 字數 1097 閱讀 6100

給定乙個整數陣列 asteroids,表示在同一行的行星。

對於陣列中的每乙個元素,其絕對值表示行星的大小,正負表示行星的移動方向(正表示向右移動,負表示向左移動)。每一顆行星以相同的速度移動。

找出碰撞後剩下的所有行星。碰撞規則:兩個行星相互碰撞,較小的行星會**。如果兩顆行星大小相同,則兩顆行星都會**。兩顆移動方向相同的行星,永遠不會發生碰撞。

示例 1:

輸入:asteroids = [5,10,-5]

輸出:[5,10]

解釋:10 和 -5 碰撞後只剩下 10 。 5 和 10 永遠不會發生碰撞。

單調棧思想, 注意分類, while 迴圈是關鍵,

兩種做法: 乙個是單調棧的經典思路, 另外乙個是也是棧, 但是只比較最top 的兩個小球,也比較巧妙

解法1:

1

int* asteroidcollision(int* asteroids, int asteroidssize, int*returnsize) else

else

if(add == 0

) else26}

27if(push_flag == 1

) 30}31

}32 *returnsize = top + 1;33

return

stack;

34 }

方法2:

1

//所以我們的方法是 只迴圈比較棧頂兩個元素 ,

2int* asteroidcollision(int* asteroids, int asteroidssize, int*returnsize)

7 memset(res, 0, sizeof(int) *asteroidssize);89

int top = 0;10

int tmp = 0;11

for (int i = 0; i < asteroidssize; i++) else

if(tmp ==0

) else25}

26}27 *returnsize =top;

28return

res;

29 }

leetcode 735 行星碰撞

給定乙個整數陣列asteroids,表示在同一行的行星。對於陣列中的每乙個元素,其絕對值表示行星的大小,正負表示行星的移動方向 正表示向右移動,負表示向左移動 每一顆行星以相同的速度移動。找出碰撞後剩下的所有行星。碰撞規則 兩個行星相互碰撞,較小的行星會 如果兩顆行星大小相同,則兩顆行星都會 兩顆移...

leetcode 735 行星碰撞

給定乙個整數陣列 asteroids,表示在同一行的行星。對於陣列中的每乙個元素,其絕對值表示行星的大小,正負表示行星的移動方向 正表示向右移動,負表示向左移動 每一顆行星以相同的速度移動。找出碰撞後剩下的所有行星。碰撞規則 兩個行星相互碰撞,較小的行星會 如果兩顆行星大小相同,則兩顆行星都會 兩顆...

LeetCode 735 行星碰撞 棧

給定乙個整數陣列 asteroids,表示在同一行的行星。對於陣列中的每乙個元素,其絕對值表示行星的大小,正負表示行星的移動方向 正表示向右移動,負表示向左移動 每一顆行星以相同的速度移動。找出碰撞後剩下的所有行星。碰撞規則 兩個行星相互碰撞,較小的行星會 如果兩顆行星大小相同,則兩顆行星都會 兩顆...