โจทย์ทั้งหมด
ง่าย 0 ข้อที่แก้แล้ว อัตราผ่าน 0%

พาสคาลส์ไทรแองเกิล

สร้างแต่ละแถวโดยนำค่าข้างเคียงจากแถวก่อนหน้ามาบวกกัน

แถวแรกคือ [1] แต่ละแถวถัดไปจะขึ้นต้นและลงท้ายด้วย 1 ทุกค่าภายในแถวเป็นผลรวมของสองค่าที่อยู่เหนือขึ้นไป Return แถวแรกถึงแถวที่ rows โดยเริ่มจากแถวที่มี 1 ตัวเดียว

ให้เขียนฟังก์ชัน pascals_triangle(rows)

อินพุต

rows: จำนวนแถวที่ต้องการสร้าง

เอาต์พุต

คืนลิสต์ของแต่ละแถว โดยเริ่มจากแถวบนสุด แต่ละแถวเป็นลิสต์ของจำนวนเต็ม

เงื่อนไข

0 ≤ rows ≤ 60 ทุกค่าจะอยู่ในช่วงของ signed 64-bit integer ถ้า rows เป็น 0 ให้คืนลิสต์ว่าง

ตัวอย่าง

ตัวอย่างที่ 1
อินพุต:
rows = 4

ผลลัพธ์ที่คาดหวัง:
expected = [
    [1],
    [1, 1],
    [1, 2, 1],
    [1, 3, 3, 1]
]
อินพุต:
long long rows = 4;

ผลลัพธ์ที่คาดหวัง:
std::vector<std::vector<long long>> expected = {
    {1},
    {1, 1},
    {1, 2, 1},
    {1, 3, 3, 1}
};
อินพุต:
long rows = 4;

ผลลัพธ์ที่คาดหวัง:
long[][] expected = new long[][] {
    new long[] {1},
    new long[] {1, 1},
    new long[] {1, 2, 1},
    new long[] {1, 3, 3, 1}
};

คำอธิบาย

เลข 2 ในแถวที่ 3 ได้จาก 1 + 1 ส่วนเลข 3 สองตัวในแถวที่ 4 ได้จาก 1 + 2 และ 2 + 1

ตัวอย่างที่ 2
อินพุต:
rows = 0

ผลลัพธ์ที่คาดหวัง:
expected = []
อินพุต:
long long rows = 0;

ผลลัพธ์ที่คาดหวัง:
std::vector<std::vector<long long>> expected = {};
อินพุต:
long rows = 0;

ผลลัพธ์ที่คาดหวัง:
long[][] expected = new long[][] {};

คำอธิบาย

ไม่ได้ร้องขอแถวใดเลย จึงต้องคืนลิสต์ว่าง

แหล่งอ้างอิง

โจทย์นี้ปรับให้เหมาะกับ CodeUtility กรุณาทำตามคำชี้แจงและข้อจำกัดด้านบน

เรียนรู้จากคนอื่น

แนวทางจากชุมชน

ยังไม่มีวิธีทำที่เผยแพร่ ลองแก้โจทย์นี้เพื่อแชร์วิธีแรก