Dễ 0 đã giải Tỷ lệ chấp nhận 0%

Tam giác Pascal

Xây dựng các hàng bằng cách cộng các phần tử liền kề từ hàng trước.

Bạn sẽ học được gì

  • Dựng mỗi hàng từ hàng trước
  • Làm việc với danh sách lồng nhau
  • Liên hệ các hàng với hệ số nhị thức

Đề bài

Xem bản gốc (English)

Hàng đầu tiên là [1]. Mỗi hàng tiếp theo bắt đầu và kết thúc bằng 1. Mỗi phần tử bên trong là tổng của hai phần tử ngay phía trên nó. Trả về rows hàng đầu tiên, bắt đầu với số 1 duy nhất.

Cài đặt hàm pascals_triangle(rows).

Đầu vào

rows: Số lượng hàng cần sinh ra.

Đầu ra

Trả về một danh sách các hàng, bắt đầu từ trên xuống; mỗi hàng là một danh sách các số nguyên.

Ràng buộc

0 ≤ rows ≤ 60. Mỗi phần tử đều nằm trong phạm vi số nguyên có dấu 64-bit. Nếu rows bằng 0 thì trả về danh sách rỗng.

Ví dụ

Ví dụ 1
Đầu vào:
rows = 4

Kết quả mong đợi:
expected = [
    [1],
    [1, 1],
    [1, 2, 1],
    [1, 3, 3, 1]
]
Đầu vào:
long long rows = 4;

Kết quả mong đợi:
std::vector<std::vector<long long>> expected = {
    {1},
    {1, 1},
    {1, 2, 1},
    {1, 3, 3, 1}
};
Đầu vào:
long rows = 4;

Kết quả mong đợi:
long[][] expected = new long[][] {
    new long[] {1},
    new long[] {1, 1},
    new long[] {1, 2, 1},
    new long[] {1, 3, 3, 1}
};

Giải thích

Số 2 ở hàng thứ 3 là 1 + 1. Hai số 3 ở giữa hàng thứ 4 là 1 + 2 và 2 + 1.

Ví dụ 2
Đầu vào:
rows = 0

Kết quả mong đợi:
expected = []
Đầu vào:
long long rows = 0;

Kết quả mong đợi:
std::vector<std::vector<long long>> expected = {};
Đầu vào:
long rows = 0;

Kết quả mong đợi:
long[][] expected = new long[][] {};

Giải thích

Không yêu cầu hàng nào, nên trả về danh sách rỗng.

Hướng tiếp cận

Hãy tự thử trước, sau đó mở từng gợi ý một.

Gợi ý 1

Mỗi hàng bắt đầu và kết thúc bằng 1, còn các giá trị bên trong lấy từ hai số phía trên.

Gợi ý 2

Xây từng hàng dựa trên hàng trước thay vì tính lại từ đầu.

Gợi ý 3

Xử lý trường hợp hàng 0 bằng cách trả về danh sách rỗng ngay lập tức.

Độ phức tạp mong đợi

thời gian O(rows^2), bộ nhớ phụ O(rows^2)

Tham khảo

Thử thách này đã được điều chỉnh cho CodeUtility. Hãy làm theo đề bài và các ràng buộc ở trên.

Học hỏi từ người khác

Giải pháp cộng đồng

Chưa có giải pháp nào được chia sẻ. Hãy giải thử thách này để đăng giải pháp đầu tiên.