Menu
CoddyTech

Asteroid Collision

Trung bìnhNgăn xếppython iconjava iconcpp iconc iconjs icon+10

Một hàng tiểu hành tinh bay dọc theo một đường thẳng, tất cả đều có cùng tốc độ. Mỗi giá trị trong asteroids mô tả một tiểu hành tinh: giá trị tuyệt đối là kích thước, còn dấu cho biết hướng di chuyển, số dương là sang phải và số âm là sang trái.

Khi một tiểu hành tinh di chuyển sang phải gặp một tiểu hành tinh di chuyển sang trái, chúng va chạm. Tiểu hành tinh nhỏ hơn sẽ nổ tung; nếu chúng có cùng kích thước, cả hai đều nổ tung. Các tiểu hành tinh di chuyển cùng hướng sẽ không bao giờ gặp nhau. Trả về các tiểu hành tinh còn lại sau mọi vụ va chạm, theo thứ tự ban đầu. Kết quả có thể là một danh sách rỗng.

Hàm

asteroidCollision(asteroids: integer-array) → integer-array
asteroidsinteger-array
các tiểu hành tinh từ trái sang phải, dấu chỉ hướng, giá trị tuyệt đối chỉ kích thước
Trả vềinteger-array
các tiểu hành tinh còn sót lại theo thứ tự từ trái sang phải, có thể không còn tiểu hành tinh nào

Ràng buộc

  • 1 ≤ asteroids.length ≤ 104
  • -1000 ≤ asteroids[i] ≤ 1000
  • asteroids[i] ≠ 0

Ví dụ

Đầu vào
asteroids = [4, 9, -6, 2, -3]
Đầu ra
[4, 9]
Giải thích
9 gặp -6 và thắng. 2 gặp -3 rồi phát nổ, sau đó -3 bay tiếp đến 9 và cũng phát nổ. Không có gì khác di chuyển về phía bất cứ thứ gì, nên 4 và 9 còn lại.
challenge icon

Câu hỏi mở rộng

Ngăn xếp cho biết những tiểu hành tinh nào sống sót. Làm thế nào để bạn cũng báo cáo chỉ số của tiểu hành tinh đã phá hủy nó, với mỗi tiểu hành tinh phát nổ?

Đặt lại code
def asteroidCollision(asteroids):
    # Viết code ở đây

Kiểm thử #1

Kiểm thử #2

Kiểm thử #3

Đối số

asteroids = [4, 9, -6, 2, -3]

Đầu ra mong đợi

[4, 9]