在 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]

更新於: 2021 年 4 月 24 日

90 次瀏覽

開啟你的職業生涯

完成課程即可獲得認證

開始
廣告