在 JavaScript 中查詢所有碰撞後的狀態
問題
我們需要編寫一個 JavaScript 函式,該函式接受一個數組 arr,它表示一維空間中不同小行星的位置。
對於每個小行星,絕對值表示其大小,而符號表示其方向(正向表示向右,負向表示向左)。每個小行星以相同的速度移動。
我們的函式應該找出所有碰撞後的小行星的狀態。如果兩個小行星相遇,較小的那個會爆炸。如果兩者大小相同,兩者都會爆炸。朝相同方向移動的兩個小行星永遠不會相遇。
例如,如果函式的輸入是
輸入
const arr = [7, 12, -8];
輸出
const output = [7, 12];
輸出說明
12 和 -8 會碰撞,得到 12。
7 和 12 永遠不會碰撞。
示例
以下是程式碼 -
const arr = [7, 12, -8]; const findState = (arr = []) => { const track = [] for (const el of arr) { track.push(el) while (track[track.length - 1] < 0 && track[track.length - 2] > 0) { const a = -track.pop() const b = track.pop() if (a > b) { track.push(-a) } else if (a < b) { track.push(b) } } } return track }; console.log(findState(arr));
輸出
[7, 12]
廣告