給定一個(gè)整數(shù)數(shù)組?asteroids,表示在同一行的行星料滥。
對(duì)于數(shù)組中的每一個(gè)元素咆繁,其絕對(duì)值表示行星的大小讳推,正負(fù)表示行星的移動(dòng)方向(正表示向右移動(dòng),負(fù)表示向左移動(dòng))玩般。每一顆行星以相同的速度移動(dòng)银觅。
找出碰撞后剩下的所有行星。碰撞規(guī)則:兩個(gè)行星相互碰撞坏为,較小的行星會(huì)爆炸究驴。如果兩顆行星大小相同,則兩顆行星都會(huì)爆炸匀伏。兩顆移動(dòng)方向相同的行星洒忧,永遠(yuǎn)不會(huì)發(fā)生碰撞。
示例 1:
輸入:asteroids = [5, 10, -5]輸出:[5, 10]解釋:10 和 -5 碰撞后只剩下 10够颠。 5 和 10 永遠(yuǎn)不會(huì)發(fā)生碰撞熙侍。
示例 2:
輸入:asteroids = [8, -8]輸出:[]解釋:8 和 -8 碰撞后,兩者都發(fā)生爆炸。
示例 3:
輸入:asteroids = [10, 2, -5]輸出:[10]解釋:2 和 -5 發(fā)生碰撞后剩下 -5蛉抓。10 和 -5 發(fā)生碰撞后剩下 10庆尘。
示例 4:
輸入:asteroids = [-2, -1, 1, 2]輸出:[-2, -1, 1, 2]解釋:-2 和 -1 向左移動(dòng),而 1 和 2 向右移動(dòng)巷送。由于移動(dòng)方向相同的行星不會(huì)發(fā)生碰撞驶忌,所以最終沒(méi)有行星發(fā)生碰撞。
說(shuō)明:
數(shù)組asteroids?的長(zhǎng)度不超過(guò)10000笑跛。
每一顆行星的大小都是非零整數(shù)付魔,范圍是[-1000, 1000]。
我的思路:循環(huán)整個(gè)數(shù)組飞蹂,遇見(jiàn)負(fù)數(shù)(向左行進(jìn)的行星)抒抬,則判斷之前是否有正數(shù)(向右行進(jìn)的行星),有則必定會(huì)發(fā)生碰撞晤柄,對(duì)兩者進(jìn)行判斷爆炸處理,直到當(dāng)前行星碰撞爆炸或是其前面沒(méi)有正數(shù)(向右行進(jìn)的行星)為止妖胀。爆炸了的行星賦值為0芥颈。當(dāng)循環(huán)完整個(gè)數(shù)組后,取出其中不為0的行星即可赚抡;
代碼實(shí)現(xiàn):