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

    สมมติว่าเรามีสตริงตัวพิมพ์เล็กสองตัวคือ S และ T เราต้องการหาความยาวของลำดับย่อยที่เป็นอนากราม (anagram subsequence) มากที่สุด ตัวอย่างเช่น หาก S = helloworld, T = hellorld ผลลัพธ์จะเป็น 8 ขั้นตอนการแก้ปัญหา สร้างแมป c นับความถี่ตัวอักษรใน S สร้างแมป d นับความถี่ตัวอักษรใน T กำหนด res = 0

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

    สมมติว่าเรามีอาร์เรย์ตัวเลขที่ไม่ได้เรียงลำดับ เราต้องการหาความยาวของลำดับตัวเลขที่เรียงติดกัน (consecutive elements) มากที่สุด ตัวอย่างเช่น หาก nums = [70, 7, 50, 4, 6, 5] ผลลัพธ์จะเป็น 4 เนื่องจากลำดับที่เรียงติดกันมากที่สุดคือ [4, 5, 6, 7] ความยาวคือ 4 ขั้นตอนการแก้ปัญหา (Hash Set - O(n)) แป

  3. โปรแกรมหาความยาวของรายการย่อยที่ไม่ซ้ำกันมากที่สุดใน Python

    สมมติว่าเรามีรายการตัวเลขที่เรียกว่า nums เราต้องการหาความยาวของรายการย่อยที่ติดกัน (contiguous sublist) ที่มีองค์ประกอบทั้งหมดไม่ซ้ำกัน (unique) ตัวอย่างเช่น หาก nums = [6, 2, 4, 6, 3, 4, 5, 2] ผลลัพธ์จะเป็น 5 เนื่องจากรายการย่อยที่มีองค์ประกอบไม่ซ้ำกันมากที่สุดคือ [6, 3, 4, 5, 2] ขั้นตอนการแก้ปั

  4. โปรแกรมหารายการย่อยที่มีค่าเท่ากันมากที่สุดหลังเพิ่มค่าได้ K ครั้งใน Python

    สมมติว่าเรามีรายการตัวเลข nums และค่า k พิจารณาการดำเนินการที่เราสามารถเพิ่มค่าขององค์ประกอบใดองค์ประกอบหนึ่งได้ 1 หน่วยต่อครั้ง หากเราสามารถดำเนินการได้สูงสุด k ครั้ง เราต้องการหารายการย่อยที่ยาวที่สุดที่มีองค์ประกอบเท่ากันทุกตัว ตัวอย่างเช่น หาก nums = [3, 5, 9, 6, 10, 7] และ k = 6 ผลลัพธ์จะเป็น

  5. โปรแกรมหาเส้นทางค่าคู่ที่ยาวที่สุดในต้นไม้ไบนารีด้วย Python

    สมมติว่าเรามีต้นไม้ไบนารี (Binary Tree) เราต้องการหาเส้นทางที่ยาวที่สุดที่ประกอบด้วยค่าคู่ (Even values) ระหว่างโหนดใดๆ สองโหนดในต้นไม้ ตัวอย่างเช่น หากอินพุตเป็นต้นไม้ดังรูป ผลลัพธ์จะเป็น 5 เนื่องจากเส้นทางที่ยาวที่สุดคือ [10, 2, 4, 8, 6] ขั้นตอนการแก้ปัญหา กำหนด ans = 0 สร้างฟังก์ชัน find(n

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

    สมมติว่าเรามีรายการตัวเลข เราต้องการหาความยาวของลำดับย่อยที่เพิ่มขึ้นมากที่สุด (Longest Increasing Subsequence - LIS) ตัวอย่างเช่น หากอินพุตคือ [6, 1, 7, 2, 8, 3, 4, 5] ผลลัพธ์จะเป็น 5 เนื่องจากลำดับย่อยที่เพิ่มขึ้นมากที่สุดคือ [2, 3, 4, 5, 6] ขั้นตอนการแก้ปัญหา (O(n log n) ด้วย Binary Search) ส

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

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

  8. โปรแกรมหาความยาวซับสตริงพาลินโดรมยาวที่สุดใน Python

    สมมติว่าเรามีสตริง S หาความยาวของซับสตริงพาลินโดรมยาวที่สุด สมมติความยาว S ไม่เกิน 1000 ตัวอย่าง: BABAC → พาลินโดรมยาวสุด BAB ความยาว 3 ขั้นตอนการแก้ปัญหา (Dynamic Programming) สร้างเมทริกซ์ dp ขนาด n×n เติม False ตั้งค่า diagonal: dp[i][i] = True สำหรับทุก i max_length = 1, start = 0 วนลูปความยาว

  9. โปรแกรมหาความยาวซับลิสต์ยาวที่สุดที่ 2×min > max ใน Python

    สมมติว่าเรามีรายการตัวเลข nums หาความยาวซับลิสต์ (subarray ติดกัน) ยาวที่สุดที่ max(sublist) ตัวอย่าง: nums = [10, 2, 6, 6, 4, 4] ผลลัพธ์ 4 (ซับลิสต์ [6, 6, 4, 4] 6) ขั้นตอนการแก้ปัญหา (Sliding Window + Deque) ret = 0 สร้าง deque minq (เก็บ index ค่าเพิ่มขึ้น) และ maxq (เก็บ index ค่าลดลง) l = 0

  10. โปรแกรมหาความยาวซับสตริงยาวที่สุดที่มีตัวอักษรไม่เกิน 2 ชนิดใน Python

    สมมติว่าเรามีสตริง s หาความยาวของซับสตริงยาวที่สุดที่มีตัวอักษรไม่เกิน 2 ชนิด ตัวอย่าง: s = xyzzy ผลลัพธ์ 4 (ซับสตริง yzzy มีแค่ y และ z) ขั้นตอนการแก้ปัญหา (Sliding Window) start = 0 c = Counter() (นับจำนวนตัวอักษรในหน้าต่าง) ans = 0 วนลูป end จาก 0 ถึง len(s)-1: c[s[end]] += 1 วนลูป while 2:

  11. โปรแกรมหาผลรวมเส้นทางยาวที่สุดจากรากถึงใบในต้นไม้ทวิภาคใน Python

    สมมติว่าเรามีต้นไม้ทวิภาค หาผลรวมของเส้นทางยาวที่สุดจากรากถึงโหนดใบ ถ้ามีเส้นทางยาวเท่ากันหลายเส้น ให้เลือกเส้นที่มีผลรวมมากกว่า ตัวอย่าง: จากภาพ ผลลัพธ์ 20 ขั้นตอนการแก้ปัญหา ฟังก์ชัน rec(curr) คืนค่าคู่ (length, sum): ถ้า curr เป็น None: คืนค่า (0, 0) bigger = max(rec(curr.left), rec(curr.righ

  12. โปรแกรมหาความยาวน้อยที่สุดของ Run-Length Encoding แบบ Lossy ใน Python

    สมมติว่าเรามีสตริงตัวพิมพ์เล็ก s และค่า k พิจารณา Run-Length Encoding (RLE): ตัวอักษรซ้ำติดกันเข้ารหัสเป็น count+char เช่น aaabbc → 3a2bc (ไม่เขียน 1c) เราสามารถลบ k ตัวอักษรติดกันออกจาก s ก่อน แล้วหาความยาว RLE น้อยที่สุด ตัวอย่าง: s = xxxxxyyxxxxxzzxxx, k = 2 ผลลัพธ์ 6 (ลบ zz ได้ 5x2y8x ความยาว 6

  13. โปรแกรมหาบรรพบุรุษร่วมต่ำสุดของสองโหนดในต้นไม้ทวิภาคใน Python

    สมมติว่าเรามีต้นไม้ทวิภาค และตัวเลข a, b หาค่าของโหนดต่ำสุด (lowest) ที่มี a และ b เป็นลูกหลาน (descendant) โหนดถือเป็นลูกหลานของตัวเองได้ ตัวอย่าง: จากภาพ a = 6, b = 2 ผลลัพธ์ 4 ขั้นตอนการแก้ปัญหา เมธอด solve(root, a, b): ถ้า root เป็น None: คืนค่า -1 ถ้า root.val เป็น a หรือ b: คืนค่า root.val

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

    สมมติว่าเรามีสตริง s หาจำนวนตัวอักษรน้อยที่สุดที่ต้องแทรก เพื่อให้สตริงกลายเป็นพาลินโดรม ตัวอย่าง: s = mad ผลลัพธ์ 2 (แทรก am ได้ madam) ขั้นตอนการแก้ปัญหา (DP เรียกซ้ำ / Recursion with Memoization) ฟังก์ชัน dp(i, j): ถ้า = j: คืนค่า 0 ถ้า s[i] == s[j]: คืนค่า dp(i+1, j-1) อื่นๆ: คืนค่า min(dp(i

  15. โปรแกรมทำให้สองลิสต์เหมือนกันด้วยการแทนซับลิสต์ด้วยผลรวมใน Python

    สมมติว่าเรามีสองลิสต์ l1 และ l2 ต้องทำให้ลิสต์เท่ากันโดยดำเนินการซ้ำ: เลือกซับลิสต์ แทนที่ด้วยผลรวมของมัน หาความยาวสูงสุดของลิสต์ผลลัพธ์ ถ้าไม่มีคำตอบ คืนค่า -1 ตัวอย่าง: l1 = [1, 4, 7, 1, 2, 10], l2 = [5, 6, 1, 3, 10] ผลลัพธ์ 4 ขั้นตอนการแก้ปัญหา (Two Pointers จากท้าย) i = len(l1)-1, j = len(l2)

  16. โปรแกรมหาจำนวนเหรียญน้อยที่สุดสำหรับการแลกเงิน (เหรียญคงที่ 1,5,10,25) ใน Python

    สมมติว่าเรามีเหรียญมูลค่าคงที่ [1, 5, 10, 25] และจำนวนเงิน amount หาจำนวนเหรียญน้อยที่สุดที่รวมเป็น amount ตัวอย่าง: amount = 64 ผลลัพธ์ 7 (25+25+10+1+1+1+1=64) ขั้นตอนการแก้ปัญหา (Dynamic Programming) ถ้า amount == 0 คืนค่า 0 ถ้า amount คืนค่า -1 สร้าง dp ขนาด amount+1 เติม -1 สำหรับแต่ละ i ใน

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

    สมมติว่าเรามีเหรียญมูลค่าต่างๆ และจำนวนเงิน amount หาจำนวนเหรียญน้อยที่สุดที่รวมเป็น amount ถ้าไม่สามารถทำได้ คืนค่า -1 ตัวอย่าง: coins = [1,2,5], amount = 64 ผลลัพธ์ 14 (12×5 + 2 + 2 = 64) ขั้นตอนการแก้ปัญหา (Dynamic Programming - Coin Change) ถ้า amount == 0 คืนค่า 0 ถ้า amount คืนค่า -1 สร้าง

  18. โปรแกรมทำให้ผลรวมคู่ติดกันน้อยกว่าหรือเท่ากับ k ใน Python

    สมมติว่าเรามีรายการตัวเลขไม่ติดลบ nums และค่า k ไม่ติดลบ มีการดำเนินการ: เลือกตัวเลขบวกใน nums ลดลง 1 หาจำนวนครั้งน้อยที่สุด ที่ทำให้ทุกคู่ติดกันมีผลรวม <= k ถ้าคำตอบใหญ่ คืนค่า mod 10^9+7 ตัวอย่าง: nums = [4, 6, 2, 5], k = 6 ผลลัพธ์ 5 (ลดเป็น [3, 3, 1, 4] รวม 5 ครั้ง) ขั้นตอนการแก้ปัญหา (Greedy)

  19. โปรแกรมเพิ่มค่าต่ำสุดให้มากที่สุดหลังเพิ่ม K ซับลิสต์ใน Python

    สมมติว่าเรามีรายการ nums และค่า size, k มีการดำเนินการ: เลือกซับลิสต์ติดกันยาว size เพิ่มทุกตัว 1 สามารถทำได้ k ครั้ง หาค่าต่ำสุดที่มากที่สุดได้ใน nums ตัวอย่าง: nums = [2, 5, 2, 2, 7], size = 3, k = 2 ผลลัพธ์ 3 ขั้นตอนการแก้ปัญหา (Binary Search + Difference Array) ฟังก์ชัน possible(target): eve

  20. โปรแกรมเพิ่มจำนวนคู่เทียบเท่าสูงสุดหลังสลับใน Python

    สมมติว่าเรามีลิสต์ A และ B ความยาวเท่ากัน และลิสต์ 2 มิติ C แต่ละคู่ [i, j] แสดงว่าสลับ A[i] และ A[j] ได้ไม่จำกัดครั้ง หาจำนวนคู่สูงสุดที่ A[i] == B[i] หลังสลับ ตัวอย่าง: A = [5, 6, 7, 8], B = [6, 5, 8, 7], C = [[0, 1], [2, 3]] ผลลัพธ์ 4 (สลับ 0↔1 และ 2↔3) ขั้นตอนการแก้ปัญหา (Graph Components + Gr

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