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

    สมมติว่าเรามีสตริง s (ตัวพิมพ์เล็ก) เราต้องการหาความยาวของสตริงย่อยที่สระเสียง (a, e, i, o, u) ทุกตัวปรากฏจำนวนคู่ (even number of times) เช่น ถ้าข้อมูลนำเข้าคือ s = anewcoffeepot ผลลัพธ์จะเป็น 10 เนื่องจากสตริงย่อย wcoffeepot มีสระสองตัวคือ o และ e ซึ่งแต่ละตัวปรากฏ 2 ครั้ง ขั้นตอนการแก้ปัญหา (ใช้

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

    สมมติว่าเรามีตัวเลข k และสตริง s เราต้องการหาขนาดของสตริงย่อย (substring) ที่ยาวที่สุดซึ่งมีตัวอักษรที่แตกต่างกันไม่เกิน k ตัว เช่น ถ้าข้อมูลนำเข้าคือ k = 3 s = kolkata ผลลัพธ์จะเป็น 4 เนื่องจากมีสตริงย่อยที่ยาวที่สุด 2 ตัวที่มีตัวอักษรแตกต่างกัน 3 ตัว คือ kolk และ kata ซึ่งมีความยาว 4 ขั้นตอนการแก้

  3. โปรแกรมหาความยาวของรายการย่อยที่มีผลรวมเป็น 0 ใน Python

    สมมติว่าเรามีรายการที่ประกอบด้วยค่าเพียงสองค่าคือ 1 และ -1 เราต้องการหาความยาวของรายการย่อย (sublist) ที่มีผลรวมเท่ากับ 0 เช่น ถ้าข้อมูลนำเข้าคือ nums = [1, 1, -1, 1, 1, -1, 1, -1, 1, -1] ผลลัพธ์จะเป็น 8 เนื่องจากรายการย่อยที่ยาวที่สุดคือ [-1, 1, 1, -1, 1, -1, 1, -1] ซึ่งมีผลรวมเท่ากับ 0 ขั้นตอนการแ

  4. โปรแกรมหาค่าสูงสุดของแต่ละสับลิสต์ขนาด K ใน Python

    ได้รับลิสต์ nums และ k หา ค่าสูงสุดของทุก subarray (contiguous) ขนาด k ตัวอย่าง Input: nums = [12, 7, 3, 9, 10, 9], k = 3 Output: [12, 9, 10, 10] Windows: [12,7,3]→12, [7,3,9]→9, [3,9,10]→10, [9,10,9]→10 แนวทางแก้ปัญหา Sliding Window Maximum (Monotonic Deque) - O(N): Deque เก็บ index โดยค่าตรง in

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

    ได้รับสตริง s หา จำนวนตัวอักษรน้อยที่สุดที่ต้องเพิ่มต่อท้าย ให้กลายเป็นพาลินโดรม ตัวอย่าง Input: mad Output: 2 (เพิ่ม am → madam) แนวทางแก้ปัญหา Rolling Hash (Rabin-Karp) แบบ Two-way: คำนวณ hash แบบ forward (l) และ backward (r) พร้อมกัน ขยายจากขวาไปซ้าย: ถ้า l == r → substring s[i:] เป็นพาลินโดรม

  6. โปรแกรมนับวิธีการต่อคำให้เป็นพาลินโดรมใน Python

    ได้รับลิสต์คำที่ ไม่ซ้ำกัน หาจำนวนวิธี นำคำสองคำต่างกันมาต่อกัน (เรียงลำดับสำคัญ) ให้ได้ พาลินโดรม ตัวอย่าง Input: [time, emit, mo, m] Output: 3 คู่ที่เป็นพาลินโดรม: time+emit=timeemit, emit+time=emittime, mo+m=mom แนวทางแก้ปัญหา Brute Force O(N² × L) (N = จำนวนคำ, L = ความยาวเฉลี่ย): ลองทุกคู่ (

  7. โปรแกรมหาค่าสูงสุดจากการแทรกตัวดำเนินการ + - * ในลิสต์ตัวเลข Python

    ได้รับลิสต์ตัวเลข nums แทรก +, -, * และวงเล็บได้อย่างใดๆ หา ค่าสูงสุดที่เป็นไปได้ ตัวอย่าง Input: [-6, -4, -10] Output: 100 นิพจน์: ((-6) + (-4)) * (-10) = (-10) * (-10) = 100 แนวทางแก้ปัญหา Interval DP (Matrix Chain Multiplication style): dp(i, j) = (min_val, max_val) ของนิพจน์จาก nums[i..j] Bas

  8. โปรแกรมหาวิธีเรียนรู้ที่มีประสิทธิภาพสูงสุดใน Python

    มีงานบ้าน 3 ลิสต์: deadlines, credits, durations (ความยาวเท่ากัน) งาน i: ต้องเสร็จก่อน deadlines[i] ได้ credits[i] ใช้เวลา durations[i] วัน ทำทีละงาน เริ่มวัน 0 หา credit สูงสุด ตัวอย่าง deadlines = [7, 5, 10], credits = [8, 7, 10], durations = [5, 4, 10] Output: 10 เลือกงานที่ 3 (duration 10, dead

  9. โปรแกรมเชื่อม Forest ให้กลายเป็น Tree เดียว ระยะทางสูงสุดน้อยที่สุดใน Python

    ได้รับ Forest (ชุดต้นไม้แยกกัน) ต้อง เพิ่มขอบเพื่อเชื่อมเป็น Tree เดียว โดยทำให้ เส้นทางยาวที่สุด (diameter) น้อยที่สุด คืนค่า diameter นั้น ตัวอย่าง Graph: สองต้นไม้แยกกัน Tree 1: 0 Tree 2: 5 / \ / \ 1 2 6 7 / \

  10. โปรแกรมตรวจสอบ Currency Arbitrage ใน Python

    ได้รับตารางอัตราแลกเปลี่ยน N×N ที่ matrix[i][j] = จำนวนสกุลเงิน j ที่ซื้อได้ด้วย 1 หน่วยสกุล i ตรวจสอบว่ามี Arbitrage opportunity A หน่วยของสกุลเดิม) ตัวอย่าง USD CAD EUR USD 1 1.28 0.82 CAD 0.78 1 0.65 EUR 1.21 1.55 1 Output: True 1 แนวทางแก้ปัญหา Bellman-Ford Negative Cycle Detec

  11. โปรแกรมนับจำนวนครั้งที่ตัวเลขปรากฏในช่วง 1 ถึง N ใน Python

    ได้รับจำนวนเต็ม n และหลัก d (0-9) หา จำนวนครั้งที่หลัก d ปรากฏ ในตัวเลข 1 ถึง n ตัวอย่าง Input: n = 45, d = 5 Output: 5 (ใน 5, 15, 25, 35, 45) แนวทางแก้ปัญหา Mathematical Digit DP (Recursive Formula): นับหลัก d ใน 1..n โดยแบ่งเป็น: ส่วนที่สมบูรณ์ (complete cycles of 10): solve(n//10 - 1) * 10 +

  12. โปรแกรมหาขอบที่ตัดแล้วกราฟจะ Disconnected ใน Python

    ได้รับกราฟแบบไม่มีทิศทาง (adjacency list) หาจำนวน Bridge edges (ขอบที่ถ้าลบออกกราฟจะแยก component) ตัวอย่าง graph = [ [0, 2], [0, 4], [1, 2, 3], [0, 3, 4], [4], [3], [2] ] Output: 1 แนวทางแก้ปัญหา Tarjans Algorithm (DFS + Low-link values): dep[u] = discovery time (depth) low[u] = min discov

  13. โปรแกรมหา K คู่ที่มีผลรวมมากที่สุดจากสองอาเรย์ใน Python

    ได้รับอาเรย์สองตัว nums0, nums1 และ k หา ผลรวมของ k คู่ที่มี sum มากที่สุด (แต่ละคู่เอา 1 ตัวจากแต่ละอาเรย์) ตัวอย่าง nums0 = [8, 6, 12], nums1 = [4, 6, 8], k = 2 Output: 38 คู่มากสุด: (12,8)=20, (12,6)=18 → รวม 38 แนวทางแก้ปัญหา Max Heap + Visited Set (Best-First Search): เรียงทั้งสองอาเรย์ เริ่

  14. โปรแกรมหา longest subsequence ที่ความต่างสัมบูรณ์ระหว่างติดกัน ≤ K ใน Python

    ได้รับลิสต์ตัวเลข nums และ k หา ความยาว subsequence ยาวที่สุด ที่ |ค่าติดกัน| ≤ k สำหรับทุกคู่ติดกันใน subsequence ตัวอย่าง Input: nums = [5, 6, 2, 1, -6, 0, -1], k = 4 Output: 6 แนวทางแก้ปัญหา DP + Segment Tree (Coordinate Compression): Coordinate compression: เรียงค่า unique ของ nums → mapping

  15. โปรแกรมหาผลรวม subsequence สูงสุดที่หาร K ลงตัวใน Python

    ได้รับลิสต์จำนวนไม่ติดลบ และ k หา ผลรวม subsequence สูงสุดที่หาร k ลงตัว ตัวอย่าง Input: nums = [4, 6, 8, 2], k = 2 Output: 20 (sum ทั้งหมด = 20 หาร 2 ลงตัว) แนวทางแก้ปัญหา ข้อสังเกต: ถ้า sum ทั้งหมดหาร k ลงตัว → คำตอบคือ sum ทั้งหมด มิฉะนั้น ต้องลบ subsequence ที่มีผลรวม ≡ remainder (mod k) และมี

  16. โปรแกรมหาคะแนนสูงสุดจากการลบกลุ่มตัวเลขติดกันใน Python

    ได้รับลิสต์จำนวนบวก ลบ sublist ติดกันที่มีค่าเท่ากัน ความยาว t ได้คะแนน t² ทำซ้ำจนลิสต์ว่าง หา คะแนนสูงสุด ตัวอย่าง Input: [4, 4, 6, 4, 4] Output: 17 ลบ 6 (t=1) → 1 แล้วเหลือ [4,4,4,4] (t=4) → 16 รวม 17 แนวทางแก้ปัญหา Interval DP (DP on intervals): State: dp(l, r, k) = คะแนนสูงสุดในช่วง [l, r] โด

  17. โปรแกรมหาคะแนนสูงสุดจากการลบ 10 หรือ 01 ในสตริงไบนารี Python

    ได้รับสตริงไบนารี s และคะแนน zero_one (ลบ 01), one_zero (ลบ 10) ลบ substring ได้ไม่จำกัดครั้ง หา คะแนนสูงสุด ตัวอย่าง Input: s = 10100101, zero_one = 3, one_zero = 2 Output: 11 ลบ 01 3 ครั้ง = 9 แล้วเหลือ 10 ลบได้อีก 2 = 11 แนวทางแก้ปัญหา Greedy + Stack: ให้คะแนนสูงกว่ามาก่อน: ถ้า zero_one < one_

  18. โปรแกรมหาค่าสูงสุดของกลุ่มที่เล็กที่สุดเมื่อแบ่งอาเรย์ K กลุ่มใน Python

    ได้รับลิสต์ nums และ k ต้องแบ่งเป็น k กลุ่มติดกัน (contiguous) หา ค่าสูงสุดของ ผลรวมกลุ่มที่เล็กที่สุด (maximize the minimum group sum) ตัวอย่าง Input: nums = [2, 6, 4, 5, 8], k = 3 Output: 8 แบ่ง: [2,6]=8, [4,5]=9, [8]=8 → min sum = 8 (สูงสุดที่เป็นไปได้) แนวทางแก้ปัญหา Binary Search คำตอบ + Gree

  19. โปรแกรมหาความยาว substring ที่ลบได้แต่ t ยังเป็น subsequence ใน Python

    ได้รับสตริง s และ t โดย t เป็น subsequence ของ s หา ความยาว substring สูงสุดที่ลบออกจาก s ได้ โดยที่ t ยังคงเป็น subsequence ตัวอย่าง Input: s = xyzxyxz, t = yz Output: 4 ลบ substring ความยาว 4 ได้ (เช่น zxyx หรือส่วนอื่นๆ) แนวทางแก้ปัญหา หาตำแหน่ง ซ้ายสุด (left) และ ขวาสุด (right) ที่ match แต่ละ

Total 9001 -คอมพิวเตอร์  FirstPage PreviousPage NextPage LastPage CurrentPage:202/451  20-คอมพิวเตอร์/Page Goto:1 196 197 198 199 200 201 202 203 204 205 206 207 208