在 JavaScript 中查找所有碰撞后的状态

javascriptweb developmentfront end technology

问题

我们需要编写一个 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]

相关文章