Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++
C++
  1. Remove Duplicates from Sorted Array II - ลบซ้ำสูงสุด 2 ครั้งใน C++

    ภาพรวมปัญหา มีอาร์เรย์จัดเรียงแล้ว ต้องลบค่าซ้ำในที่เดียว (in-place) ให้ค่าซ้ำเหลือสูงสุด 2 ครั้ง คืนความยาวใหม่ ใช้พื้นที่ O(1) ตัวอย่าง: [0,0,0,1,1,1,1,2,3,3] → [0,0,1,1,2,3,3], ความยาว = 7 อัลกอริทึม (Two Pointers) len = 2, n = ขนาดอาร์เรย์ ถ้า n ≤ 2: return n for i = 2 ถึง n-1: ถ้า nums[

  2. Search in Rotated Sorted Array II - ค้นหาในอาร์เรย์หมุนที่มีค่าซ้ำใน C++

    ภาพรวมปัญหา มีอาร์เรย์จัดเรียงแล้วแต่ถูกหมุนที่ pivot ไม่ทราบ และอาจมีค่าซ้ำ ต้องค้นหา target value คืน true/false ตัวอย่าง: [2,5,6,0,0,1,2], target=0 → true อัลกอริทึม (Modified Binary Search) low = 0, high = size of array while low < high: mid = low + (high - low)/2 ถ้า nums[mid] == targ

  3. พิมพ์บิตนัยสำคัญ (Least Significant Bit) ตำแหน่งที่ K ใน C++

    ภาพรวมปัญหา ได้รับตัวเลข n และ k ต้องพิมพ์บิตนัยสำคัญตัวที่ k ของ n ตัวอย่าง Input: n = 12, k = 3 Output: 1 Explanation: 12 = 1100 (binary), บิตตัวที่ 3 จากขวาคือ 1 วิธีแก้ปัญหา ใช้ Bitwise Operation: เลื่อนบิต (left shift) 1 ไป (k-1) ตำแหน่ง แล้วทำ AND (&) กับ n สูตร: kthLSB = (n & (1 << (k-1)))

  4. Remove Duplicates from Sorted List II - ลบโหนดซ้ำทั้งหมดใน C++

    ภาพรวมปัญหา มี Linked List ที่จัดเรียงแล้ว ต้องลบโหนดที่มีค่าซ้ำออกทั้งหมด (เก็บเฉพาะค่าที่ไม่ซ้ำ) ตัวอย่าง: [1,1,1,2,2,3,5,6,6,7,8] → [3,5,7,8] อัลกอริทึม สร้าง dummy node (val = -1), prev = NULL, dummyPtr = dummy while head ไม่ใช่ null: val (ค่าไม่ซ้ำ): next = head next = NULL

  5. Primorial ของตัวเลขใน C++ (ผลคูณของจำนวนเฉพาะ n ตัวแรก)

    ภาพรวมปัญหา ได้รับตัวเลข n ต้องหา Primorial Number (Pn#) = ผลคูณของจำนวนเฉพาะ n ตัวแรก คล้าย Factorial แต่ใช้เฉพาะจำนวนเฉพาะ ตัวอย่าง Input: N = 4 Output: 210 Explanation: P4# = 2 × 3 × 5 × 7 = 210 วิธีแก้ปัญหา หาจำนวนเฉพาะ n ตัวแรก (ใช้ Sieve of Sundaram) คูณจำนวนเฉพาะทั้ง n ตัวเข้าด้วยกัน ตั

  6. Subsets II - หาสับเซตทั้งหมด (รองรับค่าซ้ำ) ใน C++

    ภาพรวมปัญหา มีชุดตัวเลข (อาจมีค่าซ้ำ) ต้องสร้างทุกสับเซตที่เป็นไปได้ (Power Set) โดยไม่ให้มีสับเซตซ้ำ ตัวอย่าง: [1,2,2] → [[], [1], [2], [1,2], [2,2], [1,2,2]] อัลกอริทึม (Recursive + Set เพื่อกันซ้ำ) สร้าง array res และ set x ฟังก์ชัน solve(index, temp, nums): ถ้า index = ขนาด nums: ถ้า tem

  7. Primitive Root ของจำนวนเฉพาะ n โมดูลโล n ใน C++

    ภาพรวมปัญหา ได้รับจำนวนเฉพาะ N ต้องหา Primitive Root ของ N โมดูลโล N Primitive Root คือจำนวนเต็ม x ในช่วง [1, n-1] ที่ทำให้ค่า x^k (mod n) สำหรับ k ใน [0, n-2] เป็นค่าที่ไม่ซ้ำกันทั้งหมด ตัวอย่าง Input: 13 Output: 2 ทฤษฎีทางคณิตศาสตร์ ใช้ Eulers Totient Function (ETF) - จำนวนเต็มใน [1, n] ที่เป็น

  8. Prime Triplet - ชุดจำนวนเฉพาะสามตัวใน C++

    ภาพรวมปัญหา ได้รับตัวเลข N ต้องพิมพ์ Prime Triplet ทั้งหมดที่น้อยกว่า N Prime Triplet คือชุดจำนวนเฉพาะ 3 ตัว ที่อยู่ในรูปแบบ (p, p+2, p+6) หรือ (p, p+4, p+6) ตัวอย่าง Input: N = 13 Output: 5 7 11 วิธีแก้ปัญหา หาจำนวนเฉพาะทั้งหมด ≤ N ด้วย Sieve of Eratosthenes ตรวจสอบ triplet ทั้งสองรูปแบบ ตัวอ

  9. Reverse Linked List II - กลับทิศทางโหนดระหว่างตำแหน่ง m ถึง n ใน C++

    ภาพรวมปัญหา มี Linked List ต้องกลับทิศทางโหนดตั้งแต่ตำแหน่ง m ถึง n (1-indexed) ทำในหนึ่งครั้ง (one pass) ตัวอย่าง: [1,2,3,4,5], m=2, n=4 → [1,4,3,2,5] อัลกอริทึม (Recursive) ใช้สองฟังก์ชัน: reverseN() และ reverseBetween() reverseN(head, n): กลับ n โหนดแรก next, return head next, n-1) ne

  10. Prime String - ตรวจสอบสตริงว่าผลรวม ASCII เป็นจำนวนเฉพาะใน C++

    ภาพรวมปัญหา ได้รับสตริง ต้องพิมพ์ YES/NO ตามว่าผลรวมค่า ASCII ของตัวอักษรทั้งหมดเป็นจำนวนเฉพาะหรือไม่ ตัวอย่าง Input: Hello Output: No วิธีแก้ปัญหา คำนวณผลรวมค่า ASCII ของทุกตัวอักษร ตรวจสอบว่าผลรวมเป็นจำนวนเฉพาะหรือไม่ ตัวอย่างโค้ด C++ #include <iostream> using namespace std; bool Chec

  11. Prime Points - จุดที่แบ่งตัวเลขเป็นสองจำนวนเฉพาะใน C++

    ภาพรวมปัญหา ได้รับตัวเลข N ต้องพิมพ์ Prime Points ทั้งหมด (ดัชนีที่แบ่งตัวเลขเป็นสองจำนวนเฉพาะ: ด้านซ้ายและด้านขวา) ถ้าไม่มีให้พิมพ์ -1 ตัวอย่าง Input: 2359 Output: 1 Explanation: แบ่งที่ดัชนี 1 ได้ 2 และ 59 ทั้งคู่เป็นจำนวนเฉพาะ วิธีแก้ปัญหา นับจำนวนหลักของตัวเลข ลองแบ่งที่ทุกตำแหน่งที่เป็นไปได

  12. จำนวนเฉพาะและฟีโบนัชชี (Prime Fibonacci) ใน C++

    ภาพรวมปัญหา ได้รับตัวเลข n ต้องพิมพ์จำนวนที่เป็นทั้งจำนวนเฉพาะและเลขฟีโบนัชชี ที่น้อยกว่าหรือเท่ากับ n ตัวอย่าง Input: n = 30 Output: 2 3 5 13 Explanation: ฟีโบนัชชี ≤ 30: 1,1,2,3,5,8,13,21 → จำนวนเฉพาะ: 2,3,5,13 หลักการตรวจสอบเลขฟีโบนัชชี จำนวน x เป็นเลขฟีโบนัชชี ก็ต่อเมื่อ 5x² + 4 หรือ 5x² - 4

  13. Linked List Cycle II - หาจุดเริ่มต้นของวงจรใน C++

    ภาพรวมปัญหา มี Linked List ต้องตรวจสอบว่ามีวงจร (cycle) หรือไม่ ใช้ตัวแปร pos แทนตำแหน่งที่ tail เชื่อมต่อ (pos = -1 หมายถึงไม่มีวงจร) ห้ามแก้ไขโครงสร้างลิสต์ ตัวอย่าง: [5, 3, 2, 0, -4, 7], pos = 1 → tail เชื่อมต่อที่โหนดที่ 2 (ค่า 3) อัลกอริทึม Floyds Cycle Detection (Tortoise and Hare) slow :=

  14. จำนวนเฉพาะหลัง P ที่ผลรวมเท่ากับ S ใน C++

    ภาพรวมปัญหา ได้รับ 3 ตัวเลข: ผลรวม S, จำนวนเฉพาะ P, และ N ต้องหา N จำนวนเฉพาะที่มากกว่า P และผลรวมเท่ากับ S ตัวอย่าง 5: 7, 11, 13 → 7 + 11 = 18 วิธีแก้ปัญหา หาจำนวนเฉพาะทั้งหมดระหว่าง P ถึง S ใช้ Backtracking หาชุด N ตัวที่ผลรวมเท่ากับ S ตัวอย่างโค้ด C++ #include <iostream> #include <

  15. Binary Tree Preorder Traversal ใน Python

    ภาพรวมปัญหา มี Binary Tree ต้องคืนค่า Preorder Traversal (ราก → ซ้าย → ขวา) ตัวอย่างต้นไม้: Preorder: [3,9,20,15,7] อัลกอริทึม (Iterative ด้วย Stack) สร้างลิสต์ว่าง res และ st (stack) node := root while node หรือ st ไม่ว่าง: while node ไม่ใช่ null: เพิ่มค่า node เข้า res, push node

  16. Insertion Sort สำหรับ Linked List ใน C++

    ภาพรวมปัญหา มี Linked List ต้องทำการจัดเรียงด้วยอัลกอริทึม Insertion Sort ตัวอย่าง: [9,45,23,71,80,55] → [9,23,45,55,71,80] ขั้นตอนวิธีแก้ สร้าง dummy node ด้วยค่าสุ่ม node := หัวของ linked list ที่ให้มา while node ไม่ใช่ null: newNode = next ของ node, dummyHead := next ของ dummy, prevDummyH

  17. จำนวนเฉพาะของบิตเซต (Set Bits) ในการแทนค่าบाइनารีใน C++

    ภาพรวมปัญหา ได้รับจำนวนเต็ม L และ R ต้องนับจำนวนตัวเลขในช่วง [L, R] ที่มีจำนวนบิต 1 (set bits) ในรูปแบบไบนารีเป็นจำนวนเฉพาะ ตัวอย่าง Input: L = 7, R = 12 Output: 6 Explanation: 7 → 111 (set bits = 3, เฉพาะ) 8 → 1000 (set bits = 1, ไม่เฉพาะ) 9 → 1001 (set bits = 2, เฉพาะ) 10 → 1010 (set bits =

  18. ปัจจัยเฉพาะของ LCM ของสมาชิกในอาร์เรย์ใน C++

    ภาพรวมปัญหา ได้รับอาร์เรย์ที่ค่าอยู่ในช่วง 1 ≤ arr[i] ≤ 10^12 ต้องพิมพ์ปัจจัยเฉพาะทั้งหมดของ LCM (ตัวคูณร่วมน้อย) ของสมาชิกทุกตัวในอาร์เรย์ ตัวอย่าง Input: array = {2, 5, 15} Output: 2 3 5 Explanation: LCM = 30, ปัจจัยของ 30 = 2 × 3 × 5 วิธีแก้ปัญหา การหา LCM ของตัวเลขขนาด 10^12 โดยตรงอาจหนักเกิน

  19. หาค่าต่ำสุดในอาร์เรย์ที่จัดเรียงแล้วแต่หมุน (Rotated Sorted Array) ใน C++

    ภาพรวมปัญหา มีอาร์เรย์ที่จัดเรียงแล้ว แต่ถูกหมุน (rotate) ที่จุด pivot ไหนไม่ทราบ ต้องหาค่าต่ำสุดจากอาร์เรย์ที่หมุนแล้ว ตัวอย่าง: [3,4,5,1,2] → ค่าต่ำสุดคือ 1 อัลกอริทึม (Binary Search) low := 0, high := ดัชนีสุดท้าย, ans := infinity while low ≤ high: mid := low + (high - low)/2 ถ้า arr[lo

  20. ปัจจัยเฉพาะของตัวเลขขนาดใหญ่ใน C++ (รองรับถึง 10^18)

    ภาพรวมปัญหา ได้รับจำนวนเต็ม N ≤ 10^18 ต้องพิมพ์ปัจจัยเฉพาะทั้งหมดพร้อมความถี่ของแต่ละตัว ตัวอย่าง Input: 100 Output: 2 2 5 2 Explanation: การแยกตัวประกอบเฉพาะของ 100 = 2 × 2 × 5 × 5 วิธีแก้ปัญหา หาปัจจัยเฉพาะและคำนวณความถี่ โดย: ตรวจสอบความถี่ของ 2 เป็นตัวหาร แล้วหารตัวเลขด้วย 2 ซ้ำๆ ตรวจสอบจ

Total 6007 -คอมพิวเตอร์  FirstPage PreviousPage NextPage LastPage CurrentPage:132/301  20-คอมพิวเตอร์/Page Goto:1 126 127 128 129 130 131 132 133 134 135 136 137 138