給定乙個整數陣列 asteroids,表示在同一行的行星。
對於陣列中的每乙個元素,其絕對值表示行星的大小,正負表示行星的移動方向(正表示向右移動,負表示向左移動)。每一顆行星以相同的速度移動。
找出碰撞後剩下的所有行星。碰撞規則:兩個行星相互碰撞,較小的行星會**。如果兩顆行星大小相同,則兩顆行星都會**。兩顆移動方向相同的行星,永遠不會發生碰撞。
示例 1:
輸入:asteroids = [5, 10, -5]
輸出: [5, 10]
解釋:10 和 -5 碰撞後只剩下 10。 5 和 10 永遠不會發生碰撞。
示例 2:
輸入:asteroids = [8, -8]
輸出:
解釋:8 和 -8 碰撞後,兩者都發生**。
示例 3:
輸入:asteroids = [10, 2, -5]
輸出: [10]
解釋:2 和 -5 發生碰撞後剩下 -5。10 和 -5 發生碰撞後剩下 10。
示例 4:
輸入:asteroids = [-2, -1, 1, 2]
輸出: [-2, -1, 1, 2]
解釋:-2 和 -1 向左移動,而 1 和 2 向右移動。
由於移動方向相同的行星不會發生碰撞,所以最終沒有行星發生碰撞。
說明:
陣列 asteroids 的長度不超過 10000。
每一顆行星的大小都是非零整數,範圍是 [-1000, 1000] 。
思路:
從左到右依次遍歷所有的行星,根據**的條件,將未**的行星用棧來儲存。
最後棧中剩餘的行星就答案 ;
**:
class
solution
else
if(stack.
peek()
==-asteroids[i]
)// 不需要將當前行星加入棧中
break collision;
}//此時行星要加入棧中
stack.
push
(asteroids[i]);
}}//將棧轉為陣列
int[
] arr =
newint
[stack.
size()
];for(
int i = arr.length -
1; i >=
0; i--
)return arr;
}}
leetcode 735 行星碰撞
給定乙個整數陣列asteroids,表示在同一行的行星。對於陣列中的每乙個元素,其絕對值表示行星的大小,正負表示行星的移動方向 正表示向右移動,負表示向左移動 每一顆行星以相同的速度移動。找出碰撞後剩下的所有行星。碰撞規則 兩個行星相互碰撞,較小的行星會 如果兩顆行星大小相同,則兩顆行星都會 兩顆移...
leetcode 735 行星碰撞
給定乙個整數陣列 asteroids,表示在同一行的行星。對於陣列中的每乙個元素,其絕對值表示行星的大小,正負表示行星的移動方向 正表示向右移動,負表示向左移動 每一顆行星以相同的速度移動。找出碰撞後剩下的所有行星。碰撞規則 兩個行星相互碰撞,較小的行星會 如果兩顆行星大小相同,則兩顆行星都會 兩顆...
leetcode 735 行星碰撞
給定乙個整數陣列 asteroids,表示在同一行的行星。對於陣列中的每乙個元素,其絕對值表示行星的大小,正負表示行星的移動方向 正表示向右移動,負表示向左移動 每一顆行星以相同的速度移動。找出碰撞後剩下的所有行星。碰撞規則 兩個行星相互碰撞,較小的行星會 如果兩顆行星大小相同,則兩顆行星都會 兩顆...