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

    สมมติว่าเรามีรายการตัวเลข nums และค่า target เราต้องหาจำนวนคู่สูงสุดที่สำหรับแต่ละคู่ i < j, i และ j ไม่อยู่ในคู่อื่น และ = target ตัวอย่าง: nums = [2, 4, 6, 10, 11], target = 5 ผลลัพธ์คือ 2 คู่คือ (2, 6), (5, 10) (หมายเหตุ: ตัวอย่างอินพุตและคู่ที่ระบุอาจไม่ตรงกันเป๊ะๆ แต่โค้ดทำงานถูกต้อง) ขั้นตอน

  2. โปรแกรมสลับโหนดในลิงก์ลิสต์แบบคู่ใน C++

    สมมติว่าเรามีลิงก์ลิสต์ เราต้องสลับโหนดที่อยู่ติดกันเป็นคู่ (pair) และคืนหัวลิสต์ โดยมีเงื่อนไขว่าไม่สามารถแก้ไขค่าของโหนดได้ ต้องเปลี่ยนโหนดเอง เช่น [1,2,3,4] กลายเป็น [2,1,4,3] ขั้นตอนการแก้ปัญหา ถ้า head ไม่มี คืนค่า head first = head, second = head.next, สร้าง dummy ค่า -1 dummy.next = first,

  3. โปรแกรมตรวจสอบลิงก์ลิสต์เป็นพาลินโดรมหรือไม่ใน Python

    สมมติว่าเรามีลิงก์ลิสต์ เราต้องตรวจสอบว่าสมาชิกในลิสต์เป็นพาลินโดรมหรือไม่ เช่น [5,4,3,4,5] เป็นพาลินโดรม แต่ [5,4,3,2,1] ไม่ใช่ ขั้นตอนการแก้ปัญหา (Two Pointers + Reverse Half) fast = head, slow = head, rev = None, flag = 1 ถ้า head ว่าง คืนค่า True วนลูป while fast และ fast.next: ถ้า fast.next.

  4. โปรแกรมตรวจสอบสตริงเป็นอะนากรัมของพาลินโดรมหรือไม่ใน Python

    สมมติว่าเรามีสตริง s เราต้องตรวจสอบว่ามีการจัดเรียง (permutation) ใดของ s ที่เป็นพาลินโดรมหรือไม่ ตัวอย่าง: s = admma ผลลัพธ์ True เพราะจัดเรียงได้เป็น madam ซึ่งเป็นพาลินโดรม ขั้นตอนการแก้ปัญหา นับจำนวนตัวอักษรแต่ละตัวใน s เก็บใน c (ใช้ Counter) count = 0 สำหรับแต่ละค่า i ใน c.values(): ถ้า i เ

  5. โปรแกรมตรวจสอบลำดับ Inorder ของต้นไม้เป็นพาลินโดรมหรือไม่ใน Python

    สมมติว่าเรามีต้นไม้ทวิภาคที่แต่ละโหนดมีตัวเลข 0-9 เราต้องตรวจสอบว่า inorder traversal ของมันเป็นพาลินโดรมหรือไม่ ตัวอย่าง: จากภาพ inorder คือ [2,6,10,6,2] เป็นพาลินโดรม ผลลัพธ์ True ขั้นตอนการแก้ปัญหา ถ้า root เป็น None: คืนค่า True สร้างสแต็ก stack, curr = root, inorder = [] วนลูป while stack หร

  6. โปรแกรมหาโหนดใบและโหนดไม่ใช่ใบของต้นไม้ทวิภาคใน Python

    สมมติว่าเรามีต้นไม้ทวิภาค เราต้องหาลิสต์สองตัวเลข: ตัวแรกคือจำนวนโหนดใบ (leaves) ตัวที่สองคือจำนวนโหนดไม่ใช่ใบ (non-leaf nodes) ตัวอย่าง: จากภาพ ผลลัพธ์คือ (3, 2) (3 ใบ, 2 โหนดไม่ใช่ใบ) ขั้นตอนการแก้ปัญหา ถ้า n เป็น None: คืนค่า (0, 0) ถ้า n.left และ n.right เป็น None: คืนค่า (1, 0) left = solve(

  7. โปรแกรมนับจำนวนวิธีแบ่งต้นไม้เป็นสองต้นไม้ใน Python

    สมมติว่าเรามีต้นไม้ทวิภาคมีค่า 0, 1, 2 รากมีโหนด 0 อย่างน้อย 1 ตัวและโหนด 1 อย่างน้อย 1 ตัว มีการลบเส้นเชื่อม (edge) ทำให้กลายเป็นสองต้นไม้ เราต้องหาจำนวนวิธีลบเส้นเชื่อม 1 เส้น ที่ทำให้ทั้งสองต้นไม้ไม่มีทั้งโหนด 0 และ 1 ร่วมกัน ตัวอย่าง: จากภาพ ผลลัพธ์คือ 1 (ลบเส้นเชื่อม 0-2 เท่านั้น) ขั้นตอนการแ

  8. โปรแกรมนับจำนวนวิธีแจกเหรียญให้พนักงานใน Python

    สมมติว่าเรามีสองรายการ coins และ salaries โดย coins[i] คือค่าเหรียญ i และ salaries[j] เป็นเงินเดือนขั้นต่ำของพนักงาน j มีเหรียญแต่ละประเภท 1 เหรียญ ต้องให้แต่ละพนักงาน 1 เหรียญ หาจำนวนวิธีการแจก (mod 10^9+7) ตัวอย่าง: coins = [1, 2, 3], salaries = [1, 2] ผลลัพธ์คือ 4 ขั้นตอนการแก้ปัญหา เรียง coin

  9. โปรแกรมหาค่าสูงสุดในปัญหากระเป๋าแบบทีบได้หลายชิ้นใน Python

    สมมติว่าเรามีสองรายการ weights และ values ความยาวเท่ากัน และค่า capacity โดย weights[i] และ values[i] เป็นน้ำหนักและค่าของไอเทม i หากรับน้ำหนักได้สูงสุด capacity และสามารถนำไอเทมแต่ละชนิดได้ไม่จำกัดจำนวน เราต้องหาค่าสูงสุดที่ได้ ตัวอย่าง: weights = [1, 2, 3], values = [1, 5, 3], capacity = 5 ผลลัพธ

  10. โปรแกรมหาผลคูณสูงสุดของซับอาร์เรย์ติดกันใน Python

    สมมติว่าเรามีอาร์เรย์ nums เราต้องหาผลคูณของสมาชิกในซับอาร์เรย์ติดกัน (อย่างน้อย 1 ตัว) ที่มีผลคูณมากที่สุด ตัวอย่าง: [1,9,2,0,2,5] ผลลัพธ์คือ 18 จากซับอาร์เรย์ [1,9,2] ขั้นตอนการแก้ปัญหา (Dynamic Programming) สร้าง max_list และ min_list ขนาด len(nums) เติม 0 max_list[0] = min_list[0] = nums[0] ว

  11. โปรแกรมหาปริมาณน้ำฝนที่เก็บได้ใน Python

    สมมติว่าเรามีอาร์เรย์ของจำนวนเต็มไม่ติดลบ n ตัว แสดงความสูงของแท่งกว้าง 1 เราต้องคำนวณว่าหลังฝนตกจะเก็บน้ำได้เท่าไร ตัวอย่าง: [2,5,2,0,5,8,8] สามารถเก็บน้ำได้ 8 หน่วย (เห็นจากกราฟ) ขั้นตอนการแก้ปัญหา (ใช้ Stack) สร้างสแต็ก stack, water = 0, i = 0 วนลูป while i < len(height): ถ้า stack ว่าง หรือ

  12. โปรแกรมอัปเดตสมาชิกในช่วงที่กำหนดใน Python

    สมมติว่าเรามีรายการตัวเลข nums และรายการออปเปอเรชัน แต่ละออปเปอเรชันมี 3 ฟิลด์ [L, R, X] หมายความว่าเราต้องเพิ่ม X ให้กับทุกสมาชิกจาก index L ถึง R (รวม) เราต้องนำออปเปอเรชันทั้งหมดไปใช้และคืนค่ารายการสุดท้าย ตัวอย่าง: nums = [8, 4, 2, -9, 4], operations = [[0, 0, 3], [1, 3, 2], [2, 3, 5]] ผลลัพธ์ค

  13. โปรแกรมลบรายการซ้ำในลิสต์ใน Python

    สมมติว่าเรามีรายการตัวเลขชื่อ nums เราต้องลบตัวเลขที่ปรากฏหลายครั้ง (เก็บเฉพาะตัวที่ปรากฏครั้งเดียว) และรักษาลำดับการปรากฏเดิม ตัวอย่าง: nums = [2, 4, 6, 1, 4, 6, 9] ผลลัพธ์คือ [2, 1, 9] เพราะเฉพาะตัวเหล่านี้ปรากฏครั้งเดียว ขั้นตอนการแก้ปัญหา สร้างแผนที่ dict ว่าง สำหรับแต่ละ i ใน nums: ถ้า i ไม

  14. โปรแกรมลบรายการซ้ำในลิงก์ลิสต์ใน Python

    สมมติว่าเรามีลิงก์ลิสต์ของตัวเลข เราต้องลบตัวเลขที่ปรากฏหลายครั้ง (เก็บแค่ครั้งแรก) และรักษาลำดับการปรากฏเดิม ตัวอย่าง: [2 → 4 → 6 → 1 → 4 → 6 → 9] ผลลัพธ์คือ [2 → 4 → 6 → 1 → 9] ขั้นตอนการแก้ปัญหา ถ้า node ไม่ใช่ None: สร้างเซต l ว่าง temp = node เพิ่ม temp.val เข้า l วนลูป while temp.next ไม่ใ

  15. โปรแกรมนับจำนวนวงเล็บที่ต้องลบน้อยที่สุดเพื่อให้สตริงถูกต้องใน Python

    สมมติว่าเรามีสตริงวงเล็บ เราต้องเขียนฟังก์ชันคำนวณจำนวนวงเล็บน้อยที่สุดที่ต้องลบเพื่อให้สตริงถูกต้อง (วงเล็บเปิดแต่ละตัวมีวงเล็บปิดปิดท้าย) ตัวอย่าง: (()))( ผลลัพธ์คือ 2 เพราะสตริงที่ถูกต้องคือ (()) ลบ )( ขั้นตอนการแก้ปัญหา กำหนด total = 0, temp = 0 สำหรับแต่ละ p ใน s: ถ้า p == (: total += 1 ถ้า

  16. โปรแกรมหาสตริงหลังลบอักขระซ้ำติดกันใน Python

    สมมติว่าเรามีสตริง s เราต้องลบอักขระซ้ำติดกันชุดแรกซ้ำๆ จนกว่าจะไม่มีอักขระซ้ำติดกันเหลือ เราต้องหาสตริงสุดท้าย ตัวอย่าง: s = xyyyxxz ผลลัพธ์คือ z เพราะ yyy เป็นอักขระซ้ำติดกันชุดแรก ถูกลบได้ xxxz แล้ว xxx ถูกลบเหลือ z ขั้นตอนการแก้ปัญหา สร้างสแต็ก stack ว่าง, i = 0 วนลูป while i < len(s): ถ้า s

  17. โปรแกรมกลับลำดับลิงก์ลิสต์ใน Python

    สมมติว่าเรามีลิงก์ลิสต์ เราต้องกลับลำดับมัน เช่น ถ้ารายการคือ 2 → 4 → 6 → 8 รายการที่กลับแล้วจะเป็น 8 → 6 → 4 → 2 ขั้นตอนการแก้ปัญหา (แบบเรียกซ้ำ) กำหนดกระบวนการ solve(head, back) สำหรับการกลับลำดับแบบเรียกซ้ำ ถ้า head ไม่มี ให้คืนค่า head temp = head.next head.next = back back = head ถ้า temp ว่า

  18. โปรแกรมกลับทิศทางกราฟแบบมีทิศทางใน Python

    สมมติว่าเรามีกราฟแบบมีทิศทาง (directed graph) เราต้องหากราฟย้อนกลับ โดยถ้าเส้นเชื่อมไปจาก u ไป v จะกลายเป็นไปจาก v ไป u อินพุตเป็นรายการความติดกัน (adjacency list) ถ้ามี n โหนด โหนดจะเป็น (0, 1, ..., n-1) ตัวอย่าง: กราฟต้นฉบับ [[1,2],[4],[4],[1,2],[3]] ผลลัพธ์คือ [[], [0, 3], [0, 3], [4], [1, 2]]

  19. โปรแกรมกลับลำดับลิงก์ลิสต์เป็นกลุ่มขนาด k ใน Python

    สมมติว่าเรามีลิงก์ลิสต์แบบเดี่ยว (singly linked list) และค่า k เราต้องกลับลำดับทุกกลุ่มที่ติดกัน k โหนด ตัวอย่าง: List = [1,2,3,4,5,6,7,8,9,10], k = 3 ผลลัพธ์คือ [3, 2, 1, 6, 5, 4, 9, 8, 7, 10] ขั้นตอนการแก้ปัญหา สร้างโหนด dummy tmp ค่า 0, tmp.next = node กำหนด prev = None, curr = node lp = tmp,

  20. โปรแกรมหาจำนวนยานขนส่งน้อยที่สุดสำหรับการช่วยชีวิตใน Python

    สมมติว่าเรามีรายการตัวเลข weights แสดงน้ำหนักของคน และค่า limit เป็นน้ำหนักสูงสุดของยานขนส่งหนึ่งลำ แต่ละลำรับคนได้สูงสุด 2 คน เราต้องหาจำนวนยานขนส่งน้อยที่สุดเพื่อช่วยคนทุกคน ตัวอย่าง: weights = [300, 400, 300], limit = 600 ผลลัพธ์คือ 2 (ลำหนึ่งรับคนน้ำหนัก 300 สองคน, อีกลำรับคนน้ำหนัก 400) ขั้นต

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