Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++
C++
  1. Super Ugly Number ใน C++

    Super Ugly Numbers คือจำนวนเต็มบวกที่ตัวประกอบเฉพาะ (prime factors) ทั้งหมดอยู่ในรายการเฉพาะ primes ที่กำหนด ต้องหา Super Ugly Number ตัวที่ n ตัวอย่าง: n = 12, primes = [2, 7, 13, 19] ผลลัพธ์: 32 ลำดับ 12 ตัวแรก: [1, 2, 4, 7, 8, 13, 14, 16, 19, 26, 28, 32] ขั้นตอนการแก้ปัญหา (Min Heap + Multiple P

  2. โจรขโมยบ้าน III ใน C++

    โจรขโมยบ้านในพื้นที่ที่เป็นต้นไม้แบบทวิภาค รากคือทางเข้า บ้านแต่ละหลังมีพ่อเพียงหลังเดียว หากขโมยบ้านที่เชื่อมต่อโดยตรง (พ่อ-ลูก) ในคืนเดียวกัน จะถูกจับ ต้องหาจำนวนเงินสูงสุดที่ขโมยได้โดยไม่ถูกจับ ตัวอย่าง ต้นไม้ดังภาพ ผลลัพธ์: 7 ขั้นตอนการแก้ปัญหา (Tree DP) เมธอด solve(node) คืนคู่ (cantBeAdded,

  3. หาทุกตำแหน่งของ Anagram ในสตริงใน C++

    สมมติว่าเรามีสตริง s และสตริง p ไม่ว่าง ต้องหาดัชนีเริ่มต้นทั้งหมดของ anagram ของ p ใน s สตริงประกอบด้วยตัวอักษรพิมพ์เล็ก ความยาวไม่เกิน 20 และ 100 ตัวอย่าง: s: cbaebabacd, p: abc ผลลัพธ์: [0, 6] ดัชนี 0 คือ cba, ดัชนี 6 คือ bac ทั้งคู่เป็น anagram ของ abc ขั้นตอนการแก้ปัญหา (Sliding Window + Hash

  4. ตัวจัดตารางงาน (Task Scheduler) ใน C++

    สมมติว่าเรามีอาร์เรย์ตัวอักษรแทนงานที่ CPU ต้องทำ ตัวอักษร A-Z แทนงานต่างกัน งานทำได้ในลำดับไหนก็ได้ แต่ละงานใช้ 1 interval ระหว่างงานชนิดเดียวกัน ต้องมี interval อื่นหรือ idle อย่างน้อย n ช่วง (cooling interval) หาจำนวน interval น้อยที่สุดเพื่อทำงานทั้งหมด ตัวอย่าง: [A,A,A,B,B,B], n=2 ผลลัพธ์: 8 ล

  5. ซับทรีเล็กที่สุดที่มีโหนดลึกที่สุดทั้งหมดใน C++

    สมมติว่าเรามีต้นไม้แบบทวิภาครากที่ root ความลึกของโหนดคือระยะทางสั้นที่สุดไปราก โหนดลึกที่สุด (deepest) คือโหนดที่มีความลึกมากที่สุดในต้นไม้ทั้งต้น ซับทรีของโหนดคือโหนดนั้นรวมกับลูกหลานทั้งหมด ต้องหาโหนดที่มีความลึกมากที่สุดที่ซับทรีของมันมีโหนดลึกที่สุดทั้งหมด ตัวอย่าง ต้นไม้ดังภาพ ซับทรีลึกที่สุด

  6. ต้นไม้แบบทวิภาคเต็มรูปแบบทั้งหมดใน C++

    ต้นไม้แบบทวิภาคเต็มรูป (Full Binary Tree) คือต้นไม้ที่ทุกโหนดมีลูก 0 หรือ 2 ตัว เท่านั้น ให้หาต้นไม้แบบทวิภาคเต็มรูปทั้งหมดที่มีโหนด N ตัว ค่าของทุกโหนดต้องเป็น 0 ลำดับของต้นไม้ในคำตอบไม่สำคัญ ตัวอย่าง: N = 7 ได้ต้นไม้ 5 รูปแบบ ขั้นตอนการแก้ปัญหา (Recursive + Memoization) แผนที่ m เก็บผลลัพธ์สำหร

  7. ผลรวมของค่าต่ำสุดของซับอาร์เรย์ทั้งหมดใน C++

    สมมติว่าเรามีอาร์เรย์จำนวนเต็ม A ต้องหาผลรวมของ min(B) สำหรับทุกซับอาร์เรย์ B ที่ต่อเนื่องของ A เนื่องจากคำตอบอาจใหญ่มาก ให้คืนค่า modulo 10^9 + 7 ตัวอย่าง: [3,1,2,4] ผลลัพธ์: 17 ซับอาร์เรย์: [3], [1], [2], [4], [3,1], [1,2], [2,4], [3,1,2], [1,2,4], [3,1,2,4] ค่าต่ำสุด: [3,1,2,4,1,1,2,1,1,1] ผลรวม

  8. ตัวแทรกต้นไม้แบบทวิภาคสมบูรณ์ใน C++

    ต้นไม้แบบทวิภาคสมบูรณ์ (Complete Binary Tree) คือต้นไม้ที่ทุกระดับยกเว้นระดับสุดท้ายเต็มไปหมด และโหนดทั้งหมดชิดซ้ายที่สุด เราต้องเขียนโครงสร้างข้อมูล CBTInserter ที่รองรับ: CBTInserter(TreeNode root) เริ่มต้นด้วยต้นไม้ที่กำหนด CBTInserter.insert(int v) แทรกโหนดค่า v ให้ต้นไม้ยังคงสมบูรณ์ คืนค่าของ

  9. ผลรวมระดับสูงสุดของต้นไม้แบบทวิภาคใน C++

    สมมติว่าเรามีรากของต้นไม้แบบทวิภาค ระดับของรากคือ 1 ลูกคือ 2 ไปเรื่อยๆ ต้องคืนระดับ X ที่เล็กที่สุด ที่ผลรวมค่าโหนดในระดับนั้นเป็นค่าสูงสุด ตัวอย่าง ต้นไม้ดังภาพ ผลลัพธ์: 2 ระดับ 1 ผลรวม = 1, ระดับ 2 ผลรวม = 7 + 0 = 7, ระดับ 3 ผลรวม = 7 + (-8) = -1 ดังนั้นระดับ 2 สูงสุด ขั้นตอนการแก้ปัญหา (BFS Lev

  10. ต้นทุนน้อยที่สุดในการต่อไม้กาวใน C++

    สมมติว่าเรามีไม้กาวบางชิ้นที่มีความยาวเป็นจำนวนเต็มบวก เราสามารถต่อไม้กาวสองชิ้นที่มีความยาว X และ Y ให้กลายเป็นชิ้นเดียวโดยจ่ายค่าใช้จ่าย X + Y ทำซ้ำจนเหลือไม้กาวชิ้นเดียว หาต้นทุนรวมน้อยที่สุด ตัวอย่าง: [2,4,3] ผลลัพธ์: 14 ขั้นตอนการแก้ปัญหา (Min Heap / Priority Queue) สร้าง Min Heap (Priority Q

  11. ผลรวมซับอาร์เรย์สูงสุดที่ลบได้หนึ่งองค์ประกอบใน C++

    สมมติว่าเรามีอาร์เรย์จำนวนเต็ม ต้องหาผลรวมสูงสุดของซับอาร์เรย์ (องค์ประกอบติดกัน) ที่ไม่ว่างเปล่า โดยสามารถลบองค์ประกอบได้สูงสุดหนึ่งตัว กล่าวคือ เลือกซับอาร์เรย์แล้วเลือกได้ว่าจะลบหนึ่งองค์ประกอบหรือไม่ เพื่อให้ผลรวมของที่เหลือสูงสุด โดยซับอาร์เรย์ต้องไม่ว่างหลังลบ ตัวอย่าง: [1,-2,0,3] ผลลัพธ์: 4

  12. Two Sum ใน BST สองต้นใน C++

    สมมติว่าเรามีต้นไม้ค้นหาทวิภาค (BST) สองต้น ต้องคืน true ก็ต่อเมื่อมีโหนดในต้นแรกและโหนดในต้นที่สองที่ผลรวมเท่ากับ target ที่กำหนด ตัวอย่าง ต้นไม้ดังภาพ target = 5 ผลลัพธ์: true ขั้นตอนการแก้ปัญหา (Hash Set + Tree Traversal) กำหนดแผนที่ s เมธอด check(node, target, nodeNumber): ถ้า node ไม่มีอยู่

  13. ลำดับเลขคณิตยาวที่สุดที่มีความต่างกำหนดใน C++

    สมมติว่าเรามีอาร์เรย์จำนวนเต็ม arr และจำนวนเต็ม difference ต้องหาความยาวของ subsequence ยาวที่สุดที่เป็นลำดับเลขคณิตและมีความต่างระหว่างสมาชิกติดกันเท่ากับ difference ตัวอย่าง: [1,5,7,8,5,3,4,2,1], difference = -2 ผลลัพธ์: 4 เพราะลำดับยาวที่สุดคือ [7,5,3,1] ขั้นตอนการแก้ปัญหา (DP + Hash Map) กำหนด

  14. ออกแบบ Leaderboard ใน C++

    เราต้องออกแบบคลาส Leaderboard ที่มีฟังก์ชัน 3 อย่าง: addScore(playerId, score) - อัปเดตคะแนนผู้เล่น เพิ่มคะแนน ถ้ายังไม่มีผู้เล่นให้เพิ่มเข้าไป top(K) - คืนผลรวมคะแนนของผู้เล่นอันดับ 1 ถึง K reset(playerId) - รีเซ็ตคะแนนผู้เล่นเป็น 0 (รับประกันว่าผู้เล่นมีอยู่แล้ว) เริ่มต้น Leaderboard ว่างเปล่า

  15. เส้นผ่านศูนย์กลางต้นไม้ใน C++

    สมมติว่าเรามีต้นไม้แบบไม่มีทิศทาง (undirected tree) ต้องหาเส้นผ่านศูนย์กลาง (diameter) ซึ่งคือจำนวนขอบ (edges) ในเส้นทางที่ยาวที่สุดในต้นไม้นั้น ต้นไม้ให้มาในรูปรายการขอบ edges[i] = [u, v] ตัวอย่าง กราฟดังภาพ ผลลัพธ์: 4 ขั้นตอนการแก้ปัญหา (Two-pass DFS) สร้างกราฟจากรายการขอบ DFS ครั้งแรกจากโหนด 0

  16. การสลับน้อยที่สุดเพื่อทำให้สตริงเท่ากันใน C++

    สมมติว่าเรามีสตริงสองตัว s1 และ s2 ความยาวเท่ากัน ประกอบด้วยตัวอักษร x และ y เท่านั้น เราต้องการทำให้สตริงทั้งสองเท่ากัน โดยสลับตัวอักษรระหว่างสตริงต่างกัน (swap s1[i] กับ s2[j]) หาจำนวนการสลับน้อยที่สุด หรือคืน -1 ถ้าไม่ทำได้ ตัวอย่าง: s1 = xy, s2 = yx ผลลัพธ์: 2 สลับ s1[0] กับ s2[0] → s1=yy, s2=x

  17. นับจำนวนซับอาร์เรย์ที่ดีใน C++

    สมมติว่าเรามีอาร์เรย์จำนวนเต็ม nums และจำนวนเต็ม k ซับอาร์เรย์เรียกว่า ดี (nice) ถ้ามีจำนวนคี่เท่ากับ k ต้องการหาจำนวนซับอาร์เรย์ที่ดี ตัวอย่าง: [1,1,2,1,1], k = 3 ผลลัพธ์: 2 ซับอาร์เรย์คือ [1,1,2,1] และ [1,2,1,1] ขั้นตอนการแก้ปัญหา (ตำแหน่งของเลขคี่) ans := 0, n := ขนาดของ nums เก็บดัชนีของเลขคี่

  18. ลบช่วงใน C++

    สมมติว่าเรามีรายการช่วงที่เรียงลำดับและไม่ทับซ้อนกัน แต่ละช่วง intervals[i] = [a, b] แทนเซตของตัวเลข x ที่ a <= x < b เราต้องลบส่วนที่ทับซ้อนระหว่างช่วงใดช่วงหนึ่งใน intervals กับช่วง toBeRemoved แล้วคืนรายการช่วงที่เรียงลำดับหลังการลบ ตัวอย่าง: [[0,2], [3,4],[5,7]], toBeRemoved := [1, 6] ผลล

  19. ลบโหนดต้นไม้ใน C++

    สมมติว่าเรามีต้นไม้ที่รากอยู่ที่โหนด 0 กำหนดโดย: จำนวนโหนดคือ nodes ค่าของโหนดที่ i คือ value[i] พ่อของโหนดที่ i คือ parent[i] เราต้องลบ subtree ทุกตัวที่ผลรวมค่าของโหนดเป็น 0 แล้วคืนจำนวนโหนดที่เหลือ ตัวอย่าง ต้นไม้ดังภาพ มี 7 โหนด ผลลัพธ์: 2 ขั้นตอนการแก้ปัญหา (DFS Post-order) สร้างแผนที่ chi

  20. อิเทอเรเตอร์สำหรับการจัดหมู่ใน C++

    เราต้องออกแบบคลาส Iterator ที่มีการดำเนินการดังนี้: คอนสตรัคเตอร์รับสตริง characters (ตัวอักษรภาษาอังกฤษพิมพ์เล็กเรียงลำดับไม่ซ้ำ) และตัวเลข combinationLength ฟังก์ชัน next() คืนการจัดหมู่ (combination) ถัดไปที่มีความยาว combinationLength ตามลำดับอักษร ฟังก์ชัน hasNext() คืน true ก็ต่อเมื่อมีการจั

Total 6007 -คอมพิวเตอร์  FirstPage PreviousPage NextPage LastPage CurrentPage:147/301  20-คอมพิวเตอร์/Page Goto:1 141 142 143 144 145 146 147 148 149 150 151 152 153