Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python
Python
  1. โปรแกรมหาโหนดลำดับที่ K จากท้ายของ Linked List ใน Python

    สมมติว่าเรามี singly linked list เราต้องหาค่าของโหนดลำดับที่ k จากท้าย (0-indexed) ต้องแก้ในการเดินทางครั้งเดียว (single pass) ตัวอย่างเช่น node = [5, 4, 6, 3, 4, 7], k = 2 ผลลัพธ์คือ 3 (โหนด index 3 จากหน้า = index 2 จากท้าย) ขั้นตอนการแก้ปัญหา (Two Pointers) klast = node, last = node เลื่อน

  2. โปรแกรมหาตัวเลขที่หายไปลำดับที่ K จากรายการที่เรียงแล้วใน Python

    สมมติว่าเรามีรายการตัวเลขที่เรียงแล้วและไม่ซ้ำกัน nums และจำนวนเต็ม k เราต้องการหาตัวเลขที่หายไปลำดับที่ k นับจากตัวแรกของรายการ ตัวอย่างเช่น nums = [5, 6, 8, 10, 11], k = 1 ผลลัพธ์คือ 9 (ตัวเลขหายไปตัวที่ 2 คือ 9) ขั้นตอนการแก้ปัญหา (Linear Scan) วนลูป i จาก 1 ถึง len(nums) - 1: dif

  3. โปรแกรมหาองค์ประกอบที่เล็กที่สุดลำดับที่ K ในต้นไม้ค้นหาไบนารีด้วย Python

    สมมติว่าเรามีต้นไม้ค้นหาไบนารี (BST) และจำนวนเต็ม k เราต้องการหาค่าที่เล็กที่สุดลำดับที่ k ในต้นไม้ (1-indexed หรือ 0-indexed ตามการ implement) ตัวอย่างเช่น หากอินพุตเป็นต้นไม้ BST ดังรูป และ k = 3 ผลลัพธ์จะเป็น 7 ขั้นตอนการแก้ปัญหา (Iterative Inorder Traversal with Stack) stack = [], i = 0, an

  4. โปรแกรมหาจำนวนการเปลี่ยนแปลงน้อยที่สุดเพื่อให้สตริงมีตัวอักษรไม่เกิน K ชนิดใน Python

    สมมติว่าเรามีสตริง s ตัวพิมพ์เล็ก และตัวเลข k เราต้องหาจำนวนการเปลี่ยนแปลงน้อยที่สุด (เปลี่ยนตัวอักษรหนึ่งตัวเป็นอีกตัวหนึ่ง) เพื่อให้สตริงที่ได้มีตัวอักษรที่แตกต่างกันไม่เกิน k ชนิด ตัวอย่างเช่น s = wxxyyzzxx, k = 3 ผลลัพธ์คือ 1 (ลบ w ทิ้งเหลือ x, y, z 3 ชนิด) ขั้นตอนการแก้ปัญหา (Greedy + Frequen

  5. โปรแกรมหาขนาดกลุ่มอนากรามมากที่สุดจากรายการคำใน Python

    สมมติว่าเรามีรายการสตริง words เราต้องจัดกลุ่มคำที่เป็นอนากราม (anagrams) ร่วมกัน และคืนค่าขนาดของกลุ่มที่ใหญ่ที่สุด ตัวอย่างเช่น หาก words = [xy, yx, xyz, zyx, yzx, wwwww] ผลลัพธ์คือ 3 จากกลุ่ม [xyz, zyx, yzx] ขั้นตอนการแก้ปัญหา (Hash Map + Sorting Characters) lookup = {} count) res = 0 สำ

  6. โปรแกรมหารายการขนาด K ที่ความต่างระหว่างค่าสูงสุดและต่ำสุดน้อยที่สุดใน Python

    สมมติว่าเรามีรายการตัวเลข nums และจำนวนเต็ม k เราต้องเลือกสมาชิกจาก nums สร้างรายการขนาด k ให้ความต่างระหว่างค่าสูงสุดและต่ำสุดน้อยที่สุด ตัวอย่างเช่น หาก nums = [3, 11, 6, 2, 9], k = 3 ผลลัพธ์คือ 4 จากรายการ [2, 3, 6] ขั้นตอนการแก้ปัญหา (Sorting + Sliding Window) เรียงลำดับ nums สร้างรายการ

  7. โปรแกรมหาผลรวมสูงสุดของรายการย่อยวงกลมใน Python

    สมมติว่าเรามีรายการตัวเลข nums พิจารณาว่าเป็นรายการวงกลม (start และ end เป็นเพื่อนบ้าน) เราต้องการหาผลรวมสูงสุดของรายการย่อยที่ไม่ว่างในรายการวงกลม ตัวอย่างเช่น หาก nums = [2, 3, -7, 4, 5] ผลลัพธ์จะเป็น 14 เนื่องจากเลือก [4, 5, 2, 3] ผลรวม = 14 ขั้นตอนการแก้ปัญหา (Kadanes Algorithm แบบขยาย) max

  8. โปรแกรมหาผลรวมของรายการย่อยติดกันที่มีผลรวมสูงสุดใน Python

    สมมติว่าเรามีอาร์เรย์ A เราต้องการหารายการย่อยติดกัน (contiguous sublist) ที่มีผลรวมสูงสุด และคืนค่าผลรวมนั้น (Kadanes Algorithm) ตัวอย่างเช่น A = [-2, 1, -3, 4, -1, 2, 1, -5, 4] ผลรวมสูงสุดคือ 6 จาก subarray [4, -1, 2, 1] ขั้นตอนการแก้ปัญหา (Dynamic Programming - Kadanes Algorithm) สร้างอาร์เร

  9. โปรแกรมหาผลรวมสูงสุดขององค์ประกอบที่ไม่ติดกันในรายการด้วย Python

    สมมติว่าเรามีรายการตัวเลข nums เราต้องการหาผลรวมสูงสุดของตัวเลขที่ไม่ติดกัน (non-adjacent) ตัวเลขอาจเป็น 0 หรือลบก็ได้ ตัวอย่างเช่น หาก [3, 5, 7, 3, 6] ผลลัพธ์จะเป็น 16 เนื่องจากเลือก 3, 7, และ 6 ได้ 16 ขั้นตอนการแก้ปัญหา (Dynamic Programming - House Robber Pattern) หาก len(nums) <= 2 ให้คืนค่า

  10. โปรแกรมหาผลรวมสูงสุดของเส้นทางระหว่างสองโหนดในต้นไม้ไบนารีด้วย Python

    สมมติว่าเรามีต้นไม้ไบนารี เราต้องการหาผลรวมสูงสุดของเส้นทางระหว่างโหนดใดๆ สองโหนด (Path Sum) เส้นทางอาจผ่านรูทหรือไม่ก็ได้ ตัวอย่างเช่น หากอินพุตเป็นต้นไม้ดังรูป ผลลัพธ์จะเป็น 62 เนื่องจากเส้นทางคือ [12, 13, 14, 16, 7] ขั้นตอนการแก้ปัญหา (Post-order DFS) สร้างฟังก์ชัน utils(root) คืนค่า max pat

  11. โปรแกรมตรวจสอบว่าเติมตาราง Latin Square ได้หรือไม่ใน Python

    สมมติว่าเรามีเมทริกซ์ n×n ที่มีค่าจาก 0 ถึง n โดย 0 แทนช่องว่าง เราต้องตรวจสอบว่าเราสามารถเติมช่องว่างได้หรือไม่ เพื่อให้แต่ละแถวและแต่ละคอลัมน์มีตัวเลข 1 ถึง n ครั้งละครั้ง (Latin Square) ตัวอย่างเช่น เมทริกซ์: 0 0 2 2 0 1 1 2 3 สามารถเติมได้เป็น: 3 1 2 2 3 1 1 2 3 ดังนั้นผลลัพธ์คือ True ขั้นตอนก

  12. โปรแกรมตรวจสอบว่าใบไม้ทุกใบอยู่ระดับเดียวกันหรือไม่ใน Python

    สมมติว่าเรามีต้นไม้ไบนารี เราต้องตรวจสอบว่าใบไม้ (leaf nodes) ทุกใบอยู่ที่ระดับเดียวกันหรือไม่ ตัวอย่างเช่น หากอินพุตเป็นต้นไม้ดังรูป ผลลัพธ์จะเป็น True ขั้นตอนการแก้ปัญหา (DFS เก็บความลึกของใบไม้) สร้างฟังก์ชัน dfs(root, depth): หาก root ไม่ใช่ null: หากเป็นใบไม้

  13. โปรแกรมหาโหนดลึกที่สุดด้านซ้ายมือในต้นไม้ไบนารีด้วย Python

    สมมติว่าเรามีต้นไม้ไบนารี เราต้องการหาค่าของโหนดที่ลึกที่สุด (deepest node) หากมีโหนดลึกที่สุดมากกว่าหนึ่งโหนด ให้คืนค่าโหนดที่อยู่ซ้ายมือสุด (leftmost) ตัวอย่างเช่น หากอินพุตเป็นต้นไม้ดังรูป ผลลัพธ์จะเป็น 4 เนื่องจาก 4 และ 7 ลึกเท่ากันแต่ 4 อยู่ซ้ายกว่า ขั้นตอนการแก้ปัญหา (BFS Level Order) que

  14. โปรแกรมหาความยาวของลำดับย่อยที่มีวงเล็บสมดุลมากที่สุดใน Python

    สมมติว่าเรามีสตริง s ที่มีวงเล็บ ( และ ) เราต้องการหาความยาวของลำดับย่อย (subsequence) ที่มีวงเล็บสมดุล (balanced brackets) มากที่สุด ตัวอย่างเช่น หาก s = ())(()(` ผลลัพธ์จะเป็น 4 เนื่องจากเราสามารถเลือก subsequence เป็น ()() ขั้นตอนการแก้ปัญหา (Greedy จากขวาไปซ้าย) res = 0, n = len(s), close =

  15. โปรแกรมเดินทางต้นไม้ไบนารีระดับต่อระดับสลับทิศทางใน Python

    สมมติว่าเรามีต้นไม้ไบนารี เราต้องแสดงค่าของแต่ละระดับโดยสลับทิศทางไปมาระหว่างซ้าย-ขวา และขวา-ซ้าย (Zigzag Level Order Traversal) ตัวอย่างเช่น หากอินพุตเป็นต้นไม้ดังรูป ผลลัพธ์จะเป็น [5, -10, 4, -2, -7, 15] ขั้นตอนการแก้ปัญหา (Two Stacks) หาก root เป็น null ให้คืนค่ารายการว่าง s1 = [root] (sta

  16. โปรแกรมแปลงการเดินทาง Level Order ของต้นไม้ไบนารีเป็น Linked List ใน Python

    สมมติว่าเรามีต้นไม้ค้นหาไบนารี (Binary Search Tree) เราต้องแปลงมันเป็น singly linked list โดยใช้การเดินทาง level-order (BFS) ตัวอย่างเช่น หากอินพุตเป็นต้นไม้ดังรูป ผลลัพธ์จะเป็น [5, 4, 10, 2, 7, 15] ขั้นตอนการแก้ปัญหา (BFS with Queue) สร้าง head เป็น ListNode dummy currNode = head q = [root

  17. โปรแกรมสร้างต้นไม้ค้นหาไบนารีจากลิงค์ลิสต์ที่เรียงแล้วใน Python

    สมมติว่าเรามีลิงค์ลิสต์ (Linked List) ที่เรียงลำดับแล้วขนาด n เราต้องสร้างต้นไม้ค้นหาไบนารี (Binary Search Tree) โดยการนำค่าของโหนดที่ k = floor(n/2) (ตัวกลาง) มาเป็นรูท (root) จากนั้นสร้าง subtree ซ้ายและขวาแบบ recursive จากส่วนซ้ายและขวาของโหนดกลาง ตัวอย่างเช่น หากอินพุตคือ [2, 4, 5, 7, 10, 15] ผ

  18. โปรแกรมจัดแบ่งรายการสี (Red, Green, Blue) ใน Python

    สมมติว่าเรามีรายการสตริงสีที่อาจมี red, green, blue เราต้องจัดแบ่งรายการให้สีแดง (red) อยู่หน้าสีเขียว (green) และสีเขียวอยู่หน้าสีน้ำเงิน (blue) ตัวอย่างเช่น หาก colors = [blue, green, blue, red, red] ผลลัพธ์จะเป็น [red, red, green, blue, blue] ขั้นตอนการแก้ปัญหา (Dutch National Flag Algorithm -

  19. โปรแกรมหาค่าที่ปรากฏเพียงครั้งเดียวในรายการที่ค่าอื่นปรากฏ 3 ครั้งใน Python

    สมมติว่าเรามีรายการตัวเลข nums ที่แต่ละค่าปรากฏครบ 3 ครั้ง ยกเว้นค่าเดียวที่ปรากฏเพียงครั้งเดียว เราต้องหาค่าที่ไม่ซ้ำนั้น โดยต้องแก้ในพื้นที่คงที่ (constant space) ตัวอย่างเช่น หาก nums = [3, 3, 3, 8, 4, 4, 4] ผลลัพธ์จะเป็น 8 ขั้นตอนการแก้ปัญหา (ใช้ Counter - ไม่ใช่ constant space จริง) สร้างแ

  20. โปรแกรมนับจำนวนองค์ประกอบที่น้อยกว่าด้านขวาของแต่ละตำแหน่งใน Python

    สมมติว่าเรามีรายการตัวเลข nums เราจะสร้างรายการใหม่ที่แต่ละองค์ประกอบคือจำนวนองค์ประกอบที่น้อยกว่าองค์ประกอบนั้นอยู่ทางด้านขวาในรายการเดิม ตัวอย่างเช่น หาก nums = [4, 5, 9, 7, 2] ผลลัพธ์จะเป็น [1, 1, 2, 1, 0] เนื่องจาก: ทางขวาของ 4 มีค่าน้อยกว่า 1 ตัว (คือ 2) ทางขวาของ 5 มีค่าน้อยกว่า 1 ตัว (ค

Total 9001 -คอมพิวเตอร์  FirstPage PreviousPage NextPage LastPage CurrentPage:178/451  20-คอมพิวเตอร์/Page Goto:1 172 173 174 175 176 177 178 179 180 181 182 183 184