Menu
CoddyTech

Pascal's Triangle

Trong tam giác Pascal, hàng đầu tiên là [1]. Mỗi hàng tiếp theo dài hơn hàng trước một phần tử, bắt đầu và kết thúc bằng 1, còn mỗi phần tử ở giữa bằng tổng của hai phần tử ngay phía trên nó. Bạn nhận được một số nguyên numRows. Hãy trả về numRows hàng đầu tiên của tam giác, theo thứ tự từ hàng trên cùng, mỗi hàng là một mảng số nguyên.

Hàm

generate(numRows: integer) → integer-2d-array
numRowsinteger
cần dựng bao nhiêu hàng của tam giác
Trả vềinteger-2d-array
numRows hàng đầu tiên, bắt đầu từ hàng trên cùng

Ràng buộc

  • 1 ≤ numRows ≤ 30
  • Mỗi giá trị trong 30 hàng đầu tiên đều vừa với số nguyên có dấu 32 bit. Giá trị lớn nhất là 77558760, nằm giữa hàng 30.

Ví dụ

Đầu vào
numRows = 5
Đầu ra
[[1], [1, 1], [1, 2, 1], [1, 3, 3, 1], [1, 4, 6, 4, 1]]
Giải thích
Mỗi mục bên trong bằng tổng của hai mục phía trên. Hàng thứ tư: 3 = 1 + 2 và 3 = 2 + 1. Hàng thứ năm: 4 = 1 + 3, 6 = 3 + 3, 4 = 3 + 1.
challenge icon

Câu hỏi mở rộng

Bạn có thể chỉ giữ lại một mảng và cập nhật mảng đó tại chỗ, lần lượt theo từng hàng không? Vòng lặp bên trong phải chạy theo hướng nào, và tại sao?

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

Kiểm thử #1

Kiểm thử #2

Đối số

numRows = 5

Đầu ra mong đợi

[[1], [1, 1], [1, 2, 1], [1, 3, 3, 1], [1, 4, 6, 4, 1]]