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]