กลับไปยังโจทย์
ง่าย 0 ข้อที่แก้แล้ว อัตราผ่าน 0%

สามเหลี่ยมตัวเลข

สร้างสามเหลี่ยมที่มีตัวเลขเพิ่มขึ้นในแต่ละแถว

สิ่งที่คุณจะได้เรียนรู้

  • สร้างแถวที่ยาวขึ้นเรื่อย ๆ
  • เก็บตัวนับข้ามแถว
  • คืนลิสต์ 2 มิติ

โจทย์

สร้างสามเหลี่ยมตัวเลข: แถวที่ i (โดยเริ่มนับจาก 1) ให้แสดงตัวเลข 1, 2, …, i

เขียนฟังก์ชัน number_triangle(rows)

อินพุต

rows: จำนวนแถวของสามเหลี่ยม

เอาต์พุต

คืนค่าสามเหลี่ยมเป็นลิสต์ของแต่ละแถว

เงื่อนไข

0 ≤ rows ≤ 30

ตัวอย่าง

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

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

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

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

คำอธิบาย

แต่ละแถวคือ [1], [1, 2] และ [1, 2, 3]

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

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

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

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

คำอธิบาย

ไม่มีการร้องขอแถวใด ๆ ดังนั้นสามเหลี่ยมจึงว่างเปล่า

แนวทางการแก้

ลองทำเองก่อน แล้วค่อยเปิดคำใบ้ทีละข้อ

คำใบ้ 1

แถวที่ i ควรมีตัวเลขตั้งแต่ 1 ถึง i เรียงตามลำดับ

คำใบ้ 2

เพิ่มจำนวนสมาชิกของแต่ละแถวทีละหนึ่งเมื่อไล่ลงไป

คำใบ้ 3

เมื่อไม่มีแถว ผลลัพธ์ก็ควรเป็นค่าว่าง

ความซับซ้อนที่คาดหวัง

เวลา O(rows^2), หน่วยความจำเพิ่ม O(rows^2)

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

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

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

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

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