Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C#
C#
  1. การย้ายศูนย์ทั้งหมดไปท้ายอาร์เรย์ใน C#

    สร้างเมธอด MoveZeros วนลูปผ่านอาร์เรย์นับจำนวนศูนย์ ตามจำนวนที่นับได้ ตั้งค่าตำแหน่งท้ายให้เป็นศูนย์ คืนค่าโดยไม่ประมวลผลหากอาร์เรย์เป็น null หรือว่าง ผลลัพธ์สุดท้ายจะอยู่ในอาร์เรย์ nums Time Complexity O(N) เพราะวนลูปเพียงครั้งเดียวTime Complexity: O(N)Space Complexity: O(1)ตัวอย่างโค้ดpublic class

  2. การตรวจสอบว่าสตริงสองสตริงเป็น Isomorphic หรือไม่ใน C#

    สตริงสองสตริง X และ Y เรียกว่า Isomorphic หากทุกครั้งที่ตัวอักษรใน X ปรากฏ สามารถแทนที่ด้วยอีกตัวอักษรหนึ่งเพื่อให้ได้ Y และในทางกลับกัน เช่น ACAB และ XCXY ตัวอักษรทุกตัวต้องแทนที่ด้วยอีกตัวหนึ่งโดยรักษาลำดับ ไม่มีตัวอักษรสองตัว map ไปตัวเดียวกัน แต่องตัวอักษรอาจ map ไปตัวเองได้ตัวอย่าง 1Input: s =

  3. การหาความยาวของซับสตริงที่ไม่มีตัวอักษรซ้ำด้วย Sliding Window ใน C#

    จากสตริงอินพุต ใช้เทคนิค Sliding Window โดยมี pointer สองตัว i และ j ชี้ที่ตัวอักษรเดียวกัน วนลูปผ่านสตริงและเพิ่มลง List หากพบตัวซ้ำ ให้ลบออกจาก List มิฉะนั้นเพิ่มเข้าไปตัวอย่าง 1Input: s = abcabcbbOutput: 3คำอธิบาย: คำตอบคือ abc ความยาว 3ตัวอย่าง 2Input: s = bbbbbOutput: 1คำอธิบาย: คำตอบคือ b ความ

  4. การหาความยาวของลำดับย่อยเพิ่มต่อเนื่องที่ยาวที่สุดในอาร์เรย์ด้วย C#

    เมธอด LongestIncreasingSubsequence คืนค่าความยาวของลำดับย่อยที่เพิ่มขึ้นต่อเนื่องจากอาร์เรย์ ใช้ลูป for วนลูปและนับจำนวน ผลลัพธ์สุดท้ายจะได้ค่าสูงสุด Time Complexity O(N) เพราะเข้าถึงแต่ละอิลิเมนต์ครั้งเดียว Space Complexity O(1) เพราะไม่ใช้พื้นที่เก็บข้อมูลเพิ่มตัวอย่าง: {2, 4, 6, 5, 8}ผลลัพธ์: 3 (

  5. การคำนวณเลขฟีโบนัชชีด้วยวิธี Top-Down ใน C#

    ลำดับฟีโบนัชชี เริ่มจาก 0 และ 1 ตัวต่อไปเท่ากับผลรวมสองตัวก่อนหน้า วิธี Top-Down แบ่งปัญหาใหญ่เป็นชิ้นเล็กๆ ที่เข้าใจง่าย Space Complexity เป็น O(N) เนื่องจากสร้างอาร์เรย์เพิ่มขนาดเท่ากับ nTime Complexity: O(N)Space Complexity: O(N)ตัวอย่างโค้ดpublic class DynamicProgramming { public int Fibonac

  6. การคำนวณเลขฟีโบนัชชีด้วยวิธี Bottom-Up ใน C#

    ลำดับฟีโบนัชชี (Fibonacci Sequence) เริ่มจาก 0 และ 1 (หรือ 1 และ 1) ตัวเลขถัดไปเท่ากับผลรวมของสองตัวก่อนหน้า วิธี Bottom-Up เน้นแก้ปัญหาย่อยพื้นฐานก่อน แล้วรวมเป็นคำตอบสมบูรณ์Time Complexity: O(N)Space Complexity: O(N)ตัวอย่างโค้ดpublic class DynamicProgramming { public int FibonacciBottomupAppr

  7. การหาขั้นตอนน้อยที่สุดให้เหลือ 1 ด้วยวิธี Top-Down ใน C#

    เมธอด MinimumStepstoOneTopdownApproach รับพารามิเตอร์ n และอาร์เรย์ dp ตรวจสอบหาก n == 1 คืนค่า 0 เริ่มต้น op1, op2, op3 เป็นค่าสูงสุด หาก n หาร 3 ลงตัว เรียกซ้ำกับ n/3 ให้ op1 หาก n หาร 2 ลงตัว เรียกซ้ำกับ n/2 ให้ op2 เรียกซ้ำกับ n-1 ให้ op3 ใช้ Math.Min หาค่าต่ำสุดของทั้งสามบวก 1 เก็บใน dp[n] และค

  8. การหาขั้นตอนน้อยที่สุดให้เหลือ 1 ด้วยวิธี Bottom-Up ใน C#

    เมธอด MinimumStepstoOneBottomdownApproach รับพารามิเตอร์ n (จำนวนเต็ม) ตรวจสอบเงื่อนไขเริ่มต้น: หาก n == 1 คืนค่า 0 เริ่มต้น op1, op2, op3 เป็นค่าสูงสุด หาก n หาร 3 ลงตัว เรียกเมธอดซ้ำกับ n/3 และกำหนดให้ op1 หาก n หาร 2 ลงตัว เรียกซ้ำกับ n/2 ให้ op2 ไม่เช่นนั้นลบ n ลง 1 เรียกซ้ำกับ n-1 ให้ op3 สุดท้

  9. การแก้ปัญหา Coin Change ด้วยวิธี Top-Down ใน C#

    เมธอด CoinChangeTopDownApproach รับพารามิเตอร์ 4 ตัว: n คือจำนวนเงินเป้าหมาย coins คืออาร์เรย์เหรียญ t คือจำนวนชนิดเหรียญ dp คืออาร์เรย์เก็บค่าที่คำนวณไว้ หาก n เท่ากับ 0 คืนค่า 0 หากคำนวณแล้ว คืนค่าจาก dp หากยังไม่ได้คำนวณ เรียกเมธอดซ้ำ (Recursive)Time Complexity: O(N)Space Complexity: O(N)ตัวอย่าง

  10. การแก้ปัญหา Coin Change ด้วยวิธี Bottom-Up ใน C#

    เมธอด CoinChangeBottomUpApproach รับพารามิเตอร์ 3 ตัว: n คือจำนวนเงินเป้าหมาย coins คืออาร์เรย์ของเหรียญที่มีอยู่ t คือจำนวนชนิดของเหรียญ ใช้ไดนามิกอาร์เรย์ (Dynamic Array) เก็บค่าที่คำนวณไว้ก่อนหน้า ลูปผ่านอาร์เรย์และคำนวณเหรียญน้อยที่สุดที่ใช้ได้ หากคำนวณแล้วจะนำค่าจากไดนามิกอาร์เรย์มาใช้Time Comp

  11. วิธีตรวจสอบว่า Tree เป็น Symmetric หรือไม่ด้วย Iterative ใน C#

    ในแนวทาง Iterative เราต้องสร้าง 2 Queues หนึ่ง queue เก็บลูกซ้าย อีก queue เก็บค่าลูกขวา หาก tree ว่าง แล้วมัน symmetrical กับแกนแนวตั้งที่ผ่าน root node มิฉะนั้น ตรวจสอบว่าค่าที่ root node ของทั้งสอง subtree เหมือนกันหรือไม่ หากเหมือนกัน ตรวจสอบว่า left subtree และ right subtree เป็น symmetrical E

  12. วิธีตรวจสอบว่า Tree เป็น Symmetric หรือไม่ด้วย Recursion ใน C#

    ในแนวทาง recursive เพื่อหาว่า tree เป็น symmetric หรือไม่ เราเริ่มตรวจสอบว่า tree เป็น null หรือไม่ หาก tree เป็น null ถือว่า symmetric หาก tree ไม่ใช่ null เราเรียกเมธอด isSymmetricMirror ใน isSymmetricMirror เราเอาค่าลูกซ้ายและลูกขวา หากลูกซ้ายและลูกขวาเป็น null ทั้งคู่ ถือว่า symmetric หากค่าใดค

  13. วิธี Invert Binary Search Tree ด้วย Recursion ใน C#

    เพื่อ Invert Binary Search Tree เราเรียกเมธอด InvertABinarySearchTree ที่รับ node เป็นพารามิเตอร์ หาก node เป็น null คืนค่า null หาก node ไม่ใช่ null เราเรียก InvertABinarySearchTree แบบ recursive โดยส่งค่าลูกซ้ายและลูกขวา และกำหนดค่าลูกขวาให้ลูกซ้าย และค่าลูกซ้ายให้ลูกขวา ผลลัพธ์สุดท้ายจะเป็น tree

  14. วิธีตรวจสอบว่า Binary Tree เป็น Valid Binary Search Tree ด้วย Recursion ใน C#

    Tree เป็น Binary Search Tree หากมีลูกซ้ายทั้งหมดน้อยกว่าองค์ประกอบของ node และลูกขวาทั้งหมดมากกว่าองค์ประกอบของ node เริ่มต้นเราตรวจสอบว่า node มีค่าหรือไม่ หาก node เป็น null ถือว่าเป็น valid BST และคืนค่า true หลังจากตรวจสอบ node null แล้ว เราเรียกเมธอด isValidBST แบบ recursive โดยส่ง node, min v

  15. วิธีตรวจสอบว่า Binary Tree มี Path Sum ตามที่กำหนดหรือไม่ด้วย C#

    HasPathSum รับ 2 พารามิเตอร์ คือ tree node และค่า sum เริ่มต้นเราตรวจสอบว่า node เป็น null หรือไม่ หาก node เป็น null คืนค่า false หาก node ไม่ใช่ null เราเรียกเมธอด HasPathSum แบบ recursive ในแต่ละขั้นตอนเราลบค่า sum ออกจากค่า node ถ้าค่า sum กลายเป็น 0 เราสรุปได้ว่า tree นี้มี path ที่เท่ากับ sum

  16. วิธีจัดเรียง 0, 1, 2 ในอาร์เรย์ (Dutch National Flag) โดยไม่ใช้พื้นที่เพิ่มเติมด้วย C#

    เราต้องใช้ three pointers: low, mid, high เราจะใช้ low และ mid pointers ที่จุดเริ่มต้น และ high pointer จะชี้ที่ปลายของอาร์เรย์ที่กำหนด ถ้า array[mid] = 0 ให้สลับ array[mid] กับ array[low] และเพิ่ม pointers ทั้งสองทีละ 1 ถ้า array[mid] = 1 ไม่ต้องสลับ เพิ่ม mid pointer ทีละ 1 ถ้า array[mid] = 2 ให้

  17. วิธีจัดเรียง 0 และ 1 ในอาร์เรย์โดยไม่ใช้พื้นที่เพิ่มเติมด้วย C#

    ใช้ two pointers low และ high เราจะใช้ low pointer ที่จุดเริ่มต้น และ high pointer จะชี้ที่ปลายของอาร์เรย์ที่กำหนด ถ้า array[low] = 0 แล้วไม่ต้องสลับ ถ้า array[low] = 1 แล้วต้องสลับ ลด high pointer ลง 1 Time complexity - O(N) ตัวอย่าง using System; namespace ConsoleApplication { public class A

  18. วิธีหมุนอาร์เรย์ k ครั้งด้วย C#

    ได้รับอาร์เรย์และตัวเลข k โจทย์ระบุว่าเราต้องหมุนอาร์เรย์ k ครั้ง หากตัวเลขที่กำหนดคือ 3 แล้วอาร์เรย์ต้องถูกหมุน 3 ครั้ง สร้างฟังก์ชัน reverse ที่รับอาร์เรย์ start และ end เป็นพารามิเตอร์ ขั้นตอนที่ 1 เรียก reverse method จาก 0 ถึงความยาวอาร์เรย์ ขั้นตอนที่ 2 เรียก reverse method จาก 0 ถึง k-1 ขั้

  19. วิธีลบค่าซ้ำจากอาร์เรย์ที่เรียงแล้วและคืนค่าความยาวด้วย C#

    อาร์เรย์ได้รับการเรียงลำดับแล้ว เราสามารถใช้ two pointers ii และ jj โดย ii เป็น slow-runner ในขณะที่ jj เป็น fast-runner ตราบใดที่ nums[i] = nums[j] เราเพิ่ม jj เพื่อข้ามค่าซ้ำ เมื่อเราพบ nums[j] != nums[i] ช่วงค่าซ้ำจบลง เราต้องคัดลอกค่าของมันไปที่ nums[i + 1] ii จึงถูกเพิ่มขึ้นและเราทำกระบวนการเด

  20. วิธีลบค่าซ้ำจากอาร์เรย์ที่เรียงแล้วและคืนค่าอาร์เรย์ที่ไม่ซ้ำด้วย C#

    อาร์เรย์ได้รับการเรียงลำดับแล้ว เราสามารถใช้ two pointers ii และ jj โดย ii เป็น slow-runner ในขณะที่ jj เป็น fast-runnerตราบใดที่ nums[i] = nums[j] เราเพิ่ม jj เพื่อข้ามค่าซ้ำ เมื่อเราพบ nums[j] != nums[i] ช่วงค่าซ้ำจบลง เราต้องคัดลอกค่าของมันไปที่ nums[i + 1] ii จึงถูกเพิ่มขึ้นและเราทำกระบวนการเดิ

Total 2668 -คอมพิวเตอร์  FirstPage PreviousPage NextPage LastPage CurrentPage:133/134  20-คอมพิวเตอร์/Page Goto:1 127 128 129 130 131 132 133 134