Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Tìm trạng thái sau tất cả va chạm trong JavaScript

Vấn đề

Chúng ta cần viết một hàm JavaScript nhận vào một mảng arr đại diện cho vị trí tiểu hành tinh trong không gian 1D. Giá trị tuyệt đối = kích thước, dấu = hướng (dương: phải, âm: trái). Tốc độ như nhau.

Hàm phải tìm trạng thái sau tất cả va chạm. Va chạm: nhỏ hơn nổ, bằng nhau cả hai nổ, cùng hướng không gặp.

Ví dụ, nếu đầu vào là:

Đầu vào

const arr = [7, 12, -8];

Đầu ra

const output = [7, 12];

Giải thích

12 và -8 va chạm -> 12 sống sót. 7 và 12 cùng hướng -> không va chạm.

Ví dụ

Dưới đây là mã thực hiện:

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));

Kết quả

[7, 12]