Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++
C++
  1. Longest Substring with At Least K Repeating Characters: สตริงย่อยที่มีตัวอักษรซ้ำ ≥ K ใน C++

    ปัญหา กำหนดสตริง s (Lowercase only) และ k หา ความยาวสตริงย่อย (Substring) ยาวที่สุด ที่ทุกตัวอักษรในสตริงย่อยนั้นปรากฏ ≥ k ครั้ง ตัวอย่าง: s=ababbc, k=2 → ababb (a:2, b:3) → ความยาว 5 แนวคิด: Divide & Conquer (Recursive) ข้อสังเกต ถ้าตัวอักษร c ใน s ปรากฏ น้อยกว่า k ครั้ง → c ไม่สามารถอยู่ในคำตอบ

  2. Queue Reconstruction by Height ใน C++

    โจทย์: Queue Reconstruction by Height มีคนยืนคิวสุ่ม แต่ละคนมีคู่ (h, k) โดย: h = ส่วนสูง k = จำนวนคนที่อยู่ หน้าคนนี้** และมีส่วนสูง = h ต้องสร้างคิวใหม่ที่สอดคล้องกับเงื่อนไขทั้งหมด ตัวอย่าง: [[7,0], [4,4], [7,1], [5,0], [6,1], [5,2]] ผลลัพธ์: [[5,0], [7,0], [5,2], [6,1], [4,4], [7,1]] อัลกอริ

  3. Partition Equal Subset Sum ใน C++

    โจทย์: Partition Equal Subset Sum ให้อาร์เรย์จำนวนเต็มบวก nums ไม่ว่างเปล่า ตรวจสอบว่าสามารถแบ่งออกเป็น 2 ส่วนย่อย (subsets) ที่มี ผลรวมเท่ากัน** ได้หรือไม่ ตัวอย่าง: nums = [1, 5, 11, 5] ผลรวมรวม = 22, เป้าหมายแต่ละส่วน = 11 สามารถแบ่งได้: [1, 5, 5] และ [11] → true อัลกอริทึม: 0/1 Knapsack (Subse

  4. Reconstruct Original Digits from English ใน C++

    โจทย์: Reconstruct Original Digits from English ให้สตริงที่ประกอบด้วยตัวอักษรอังกฤษสับสนของคำอ่านตัวเลข 0-9 (zero, one, two, three, four, five, six, seven, eight, nine) ต้องคืนค่าตัวเลขเดิมเรียงจากน้อยไปมาก ตัวอย่าง: s = fviefuro → มีตัวอักษรของ five (5) และ four (4) → ผลลัพธ์: 45 อัลกอริทึม: Uniq

  5. Longest Repeating Character Replacement ใน C++

    โจทย์: Longest Repeating Character Replacement ให้สตริง s ประกอบด้วยตัวพิมพ์ใหญ่ (A-Z) เท่านั้น สามารถทำการ เปลี่ยนตัวอักษรได้สูงสุด k ครั้ง** (แต่ละครั้ง เปลี่ยนตัวอักษรตัวใดตัวหนึ่งเป็นตัวอักษรพิมพ์ใหญ่อื่น) ต้องหา ความยาวสูงสุด** ของ substring ที่มี ตัวอักษรเดียวกันทั้งหมด** หลังจากเปลี่ยนได้สูงส

  6. Find All Duplicates in an Array ใน C++

    โจทย์: Find All Duplicates in an Array ให้อาร์เรย์จำนวนเต็ม nums ขนาด n โดยที่ 1 ≤ nums[i] ≤ n บางตัวปรากฏ 2 ครั้ง บางตัว 1 ครั้ง ต้องหา ตัวที่ปรากฏ 2 ครั้งทั้งหมด** โดยใช้ O(1) พื้นที่เพิ่มเติม** (ไม่นับพื้นที่เก็บผลลัพธ์) และ O(n) เวลา** ตัวอย่าง: nums = [4,3,2,7,8,2,3,1] ตัวที่ซ้ำ: 2 และ 3 → ผลล

  7. Sort Characters By Frequency ใน C++

    โจทย์: Sort Characters By Frequency ให้สตริง s ต้องเรียงตัวอักษรตาม ความถี่จากมากไปน้อย** หากความถี่เท่ากัน ลำดับไม่ได้ระบุ (แต่โค้ดตัวอย่างเรียงตาม ASCII) ตัวอย่าง: s = abbbacbcc ความถี่: b:4, c:3, a:2 ผลลัพธ์: bbbbcccaa อัลกอริทึม: Counting + Sorting นับความถี่แต่ละตัวอักษรด้วย unordered_map<

  8. Target Sum ใน C++

    โจทย์: Target Sum ให้รายการจำนวนเต็มไม่ติดลบ nums และค่าเป้าหมาย S สำหรับแต่ละตัวเลข ต้องเลือกเครื่องหมาย + หรือ - นำหน้า ต้องหา จำนวนวิธี** การเลือกเครื่องหมายที่ทำให้ผลรวมเท่ากับ S ตัวอย่าง: nums = [1,1,1,1,1], S = 3 วิธีที่เป็นไปได้ 5 วิธี: +1+1+1+1+1 = 5 (ไม่ใช่) +1+1+1+1-1 = 3 ✓ +1+1+1-1+1 = 3

  9. Next Greater Element II ใน C++

    โจทย์: Next Greater Element II (Circular Array) ให้อาร์เรย์ วน (circular) (องค์ประกอบสุดท้ายเชื่อมกับองค์ประกอบแรก) ต้องหา Next Greater Element** สำหรับแต่ละองค์ประกอบ Next Greater ของ x คือ องค์ประกอบแรกที่ มากกว่า x เมื่อเดินไปข้างหน้า (รวมถึงวนกลับมาหน้า) หากไม่มี → -1 ตัวอย่าง: nums = [1, 2, 1,

  10. Coin Change 2 ใน C++

    โจทย์: Coin Change 2 (จำนวนวิธีทำเงิน) ให้เหรียญมูลค่าต่างๆ coins และจำนวนเงิน amount ต้องหา จำนวนวิธี (combinations) ที่ทำให้ได้เงินเท่ากับ amount โดยใช้เหรียญแต่ละชนิด ไม่จำกัดจำนวน (unlimited) ลำดับของเหรียญไม่สำคัญ (combinations ไม่ใช่ permutations) ตัวอย่าง: amount = 5, coins = [1, 2, 5] วิธีท

  11. Single Element in a Sorted Array ใน C++

    โจทย์: Single Element in a Sorted Array ให้อาร์เรย์ เรียงลำดับแล้ว (sorted) ประกอบด้วยจำนวนเต็ม ซึ่ง ทุกตัวปรากฏ 2 ครั้ง** ยกเว้น 1 ตัวที่ปรากฏ 1 ครั้ง** ต้องหาตัวนั้น ตัวอย่าง: nums = [1, 1, 2, 3, 3, 4, 4, 8, 8] → ผลลัพธ์: 2 วิธีที่ 1: XOR (ทำงานได้กับอาร์เรย์ไม่เรียงลำดับด้วย) คุณสมบัติของ XOR:

  12. Subarray Sum Equals K ใน C++

    โจทย์: Subarray Sum Equals K ให้อาร์เรย์จำนวนเต็ม nums และจำนวนเต็ม k ต้องหา จำนวนซับอาร์เรย์ติดต่อกัน (contiguous subarrays) ที่มีผลรวมเท่ากับ k อย่างแน่นอน ตัวอย่าง: nums = [1, 1, 1], k = 2 ซับอาร์เรย์ที่ผลรวม = 2: [1,1] (index 0-1), [1,1] (index 1-2) → ผลลัพธ์: 2 อัลกอริทึม: Prefix Sum + Hash M

  13. Permutation in String ใน C++

    โจทย์: Permutation in String ให้สตริงสองตัว s1 และ s2 ต้องตรวจสอบว่า s2 มี substring ที่เป็น permutation (การจัดเรียงใหม่) ของ s1 หรือไม่ นั่นคือ ตัวอักษรของ s1 สามารถเรียงใหม่ได้เป็น substring ติดต่อกันใน s2 ตัวอย่าง: s1 = abc, s2 = findcab Permutation ของ abc คือ cab ซึ่งเป็น substring ของ findca

  14. Delete Operations for Two Strings ใน C++

    โจทย์: Delete Operations for Two Strings ให้สตริงสองตัว s1 และ s2 ต้องหา จำนวนขั้นตอนน้อยที่สุด** เพื่อให้สตริงทั้งสองเหมือนกัน โดยในแต่ละขั้นตอนสามารถลบตัวอักษร 1 ตัวจากสตริงใดสตริงหนึ่งได้เท่านั้น (ไม่มีการแทรกหรือแทนที่) ตัวอย่าง: s1 = sea, s2 = eat ลบ s จาก s1 → ea ลบ t จาก s2 → ea จำนวนขั้นตอน

  15. Find K Closest Elements ใน C++

    โจทย์: Find K Closest Elements ให้อาร์เรย์ เรียงลำดับแล้ว (sorted) arr และจำนวนเต็ม k และ x ต้องหา k องค์ประกอบที่ ใกล้ที่สุดกับ x ผลลัพธ์ต้องเรียงลำดับเพิ่มขึ้น หากมีความเท่ากัน (ระยะห่างเท่ากัน) ให้เลือกค่าที่ น้อยกว่า** ตัวอย่าง: arr = [1,2,3,4,5], k = 4, x = 3 ระยะห่าง: 1→2, 2→1, 3→0, 4→1, 5→2

  16. Number of Longest Increasing Subsequence ใน C++

    โจทย์: Number of Longest Increasing Subsequence ให้อาร์เรย์จำนวนเต็ม nums ไม่เรียงลำดับ ต้องหา จำนวนของ Longest Increasing Subsequence (LIS) ที่มีความยาวสูงสุด ตัวอย่าง: nums = [1, 3, 5, 4, 7] LIS ความยาว 4 มี 2 ชุด: [1,3,5,7] และ [1,3,4,7] → ผลลัพธ์: 2 อัลกอริทึม: DP O(n²) สำหรับแต่ละ index i เก็

  17. Top K Frequent Words ใน C++

    โจทย์: Top K Frequent Words ให้รายการคำ (words) ไม่ว่างเปล่า ต้องหา k คำที่ปรากฏบ่อยที่สุด เรียงลำดับตาม ความถี่จากมากไปน้อย หากความถี่เท่ากัน เรียงตาม ลำดับอักษร (alphabetical order) จากน้อยไปมาก** ตัวอย่าง: words = [the,sky,is,blue,the,weather,is,comfortable], k = 3 ความถี่: the:2, is:2, sky:1, b

  18. Partition to K Equal Sum Subsets ใน C++

    โจทย์: Partition to K Equal Sum Subsets ให้อาร์เรย์จำนวนเต็ม nums และจำนวนเต็มบวก k ตรวจสอบว่าสามารถแบ่งอาร์เรย์ออกเป็น k ส่วนย่อย (subsets) ที่ไม่ว่างเปล่า ได้หรือไม่ โดยที่ ผลรวมของแต่ละส่วนเท่ากันทุกส่วน ตัวอย่าง: nums = [4,3,2,3,5,2,1], k = 4 สามารถแบ่งได้: [5], [1,4], [2,3], [2,3] ผลรวมแต่ละชุ

  19. Insert into a Binary Search Tree ใน C++

    โจทย์: Insert into a Binary Search Tree ให้ Binary Search Tree (BST) และค่า val ต้องแทรกโหนดใหม่ที่มีค่า val ลงใน BST โดยที่หลังแทรกเสร็จ ต้นไม้ยังคงเป็น BST อยู่ (ค่าด้านซ้ายน้อยกว่าโหนด ค่าด้านขวาเยอะกว่าโหนด) ตัวอย่าง: BST เดิม: [4,2,7,1,3] แทรก 5 → ผลลัพธ์: [4,2,7,1,3,5] อัลกอริทึม: Recursive

  20. Minimum ASCII Delete Sum for Two Strings ใน C++

    โจทย์: Minimum ASCII Delete Sum for Two Strings ให้สตริงสองตัว s1 และ s2 ต้องหา ผลรวมค่า ASCII ต่ำสุด** ของตัวอักษรที่ต้องลบ เพื่อให้สตริงทั้งสองกลายเป็นเหมือนกัน ในแต่ละขั้นตอนสามารถลบตัวอักษร 1 ตัวจากสตริงใดสตริงหนึ่งได้ ตัวอย่าง: s1 = sea, s2 = eat ลบ s จาก s1 → ea (ASCII 115) ลบ t จาก s2 → ea (

Total 6007 -คอมพิวเตอร์  FirstPage PreviousPage NextPage LastPage CurrentPage:139/301  20-คอมพิวเตอร์/Page Goto:1 133 134 135 136 137 138 139 140 141 142 143 144 145