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

    ได้รับรายการพิกัด [[x, y], ...] ต้องหาจำนวนจุดสูงสุดที่อยู่บนเส้นตรงเดียวกัน ตัวอย่าง Input: [[6,2],[8,3],[10,4],[1,1],[2,2],[6,6],[7,7]] Output: 4 (จุด [1,1], [2,2], [6,6], [7,7] อยู่บนเส้น y = x) แนวทางแก้ปัญหา ใช้ Hash Map นับความชัน (Slope) สำหรับแต่ละจุดฐาน: เลือกจุด i เป็นฐาน คำนวณความชันกั

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

    ได้รับรายการขอบ edges ที่เป็นต้นไม้ (Tree) สำหรับแต่ละขอบ ต้องหาจำนวนเส้นทางที่ไม่ซ้ำกัน (unique paths) ที่ผ่านขอบนั้น โดยคืนค่าเป็นลิสต์ตามลำดับขอบในอินพุต ตัวอย่าง edges = [[0,1], [0,2], [1,3], [1,4]] 0 / \ 1 2 / \ 3 4 ผลลัพธ์: [6, 4, 4, 4] แนวทางแก้ปัญหา ข้อสังเกตสำคัญ

  3. โปรแกรมตรวจสอบ Regular Expression Pattern Matching ใน Python

    ได้รับสตริง s และพาตเทิร์น p ต้องตรวจสอบว่า p ตรงกับ s หรือไม่ พาตเทิร์นรองรับ: . (จุด) = ตรงกับตัวอักษรใดๆ หนึ่งตัว * (ดาว) = ตรงกับศูนย์หรือหลายตัวของอิลิเมนต์ก่อนหน้า ตัวอย่าง Pattern: h.l*o, String: hello → True เพราะ h ตรง h, . ตรง e, l* ตรง ll, o ตรง o แนวทางแก้ปัญหา ใช้ Recursive DP with

  4. โปรแกรมประเมินค่า S-Expression เป็นสตริงใน Python

    ได้รับสตริง s ที่เป็น S-Expression (นิพจน์แบบ Lisp) ต้องประเมินค่าและคืนผลลัพธ์เป็นจำนวนเต็ม ตัวดำเนินการที่รองรับ: +, -, *, / ตัวอย่าง อินพุต: (- (+ 3 2) 2) ผลลัพธ์: 3 เพราะ ((3 + 2) - 2) = 3 แนวทางแก้ปัญหา ใช้ Stack ประมวลผลจากขวาไปซ้าย (Reverse Polish Notation style): ลบวงเล็บออก แล้วแยกทอเคนด

  5. โปรแกรมหาความห่างของสะพานสั้นที่สุดระหว่างเกาะใน Python

    ได้รับเมทริกซ์ไบนารีที่ 0 แทนน้ำ และ 1 แทนบก เกาะคือกลุ่มของ 1 ที่ติดกันใน 4 ทิศทาง (บน ล่าง ซ้าย ขวา) เราต้องการหาความยาวของสะพานสั้นที่สุดที่เชื่อมต่อสองเกาะเข้าด้วยกัน ตัวอย่าง 0 0 1 1 0 1 1 0 0 ผลลัพธ์คือ 1 เพราะสามารถเชื่อมจุด (1,0) กับ (1,2) ได้โดยสร้างสะพานยาว 1 หน่วย แนวทางแก้ปัญหา DFS

  6. โปรแกรมหาความยาวของซูเปอร์ซีเควสที่สั้นที่สุดใน Python

    สมมติว่าเรามีสตริงสองตัวคือ s และ t เราต้องการหาความยาวของสตริงที่สั้นที่สุดซึ่งมีทั้ง s และ t เป็นซับซีเควส (subsequence) ตัวอย่าง หากอินพุตคือ s = pipe และ t = people ผลลัพธ์จะเป็น 7 เนื่องจากซูเปอร์ซีเควสที่เป็นไปได้คือ pieople แนวทางแก้ปัญหา ปัญหานี้สามารถแก้ได้โดยใช้ Dynamic Programming เพื่อ

  7. โปรแกรมลบเกาะที่ถูมน้ำล้อมรอบสมบูรณ์ใน Python

    คำอธิบายโจทย์ เมทริกซ์ไบนารี 1=ที่ดิน 0=น้ำ เกาะ = กลุ่ม 1 ติดกัน (4 ทิศทาง) ลบเกาะที่ถูนน้ำล้อมรอบสมบูรณ์ (ไม่ติดขอบ) โดยเปลี่ยนเป็น 0 ตัวอย่าง Input: เกาะกลางติดขอบไม่ถูกลบ, เกาะกลางถูมน้ำล้อม → ถูกลบ Output: เหลือแค่เกาะมุม วิธีแก้ปัญหา BFS/DFS จากขอบ (Boundary-connected Components): เริ่ม BFS

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

    คำอธิบายโจทย์ ให้ nums และ target หาความยาว subarray สั้นที่สุดที่ sum ≥ target ไม่มีคืน -1 ตัวอย่าง nums = [2, 11, -4, 17, 4], target = 19 → 2 (subarray [17, 4]) วิธีแก้ปัญหา Prefix Sum + Monotonic Queue (Sliding Window Minimum): สร้าง prefix sum array ps Monotonic queue q เก็บ index ของ ps ที่เ

  9. โปรแกรมหาค่า k สูงสุดสำหรับระยะห่างปลอดภัยในเมทริกซ์ไบนารีใน Python

    คำอธิบายโจทย์ เมทริกซ์ไบนารี 0=ว่าง 1=คน ระยะห่าง = max(|dx|, |dy|) (Chebyshev distance) เมทริกซ์ปลอดภัย factor k ถ้ามีเซลล์ว่างที่ระยะจากทุกคนและขอบ ≥ k หา k สูงสุด ตัวอย่าง เมทริกซ์ 5x5 มีคนกลาง → k = 1 (เซลล์กลางห่างจากคนและขอบ ≥ 1) วิธีแก้ปัญหา Largest Empty Square (DP) บนเมทริกซ์ที่ invert แล

  10. โปรแกรมหาต้นทุนต่ำสุดเพิ่มความสูงต้นไม้ไม่ให้ติดกันเท่ากันใน Python

    คำอธิบายโจทย์ ให้ heights = ความสูงต้นไม้, costs = ราคาเพิ่มความสูง 1 หน่วย หาต้นทุนน้อยที่สุดทำให้ต้นไม้ติดกันไม่มีความสูงเท่ากัน ตัวอย่าง heights = [3, 2, 2], costs = [2, 5, 3] → 3 (เพิ่มต้นสุดท้าย 1 หน่วย ค่า 3) วิธีแก้ปัญหา DP + Memoization: dp(idx, left_height) = cost น้อยที่สุดจาก idx ถึงสุ

  11. โปรแกรมขยายสตริงรูปแบบ n(t) ใน Python

    คำอธิบายโจทย์ สตริง s เข้ารหัสเป็น n(t) แทน t ซ้ำ n ครั้ง t อาจเป็นสตริงธรรมดาหรือ n(t) ซ้อนกัน (recursive) หา decoded string ตัวอย่าง s = 3(pi)2(3(am))0(f)1(u) → pipipiamamamamamamu วิธีแก้ปัญหา Recursive Descent Parsing: Global index i เดินตามสตริง parse(): อ่านจนกว่าจะเจอ ) หรือจบสตริง เจอตัวเ

  12. โปรแกรมหาขนาดสับลิสต์ที่ (min × size) สูงสุดและรวม index pos ใน Python

    คำอธิบายโจทย์ ให้ nums และ pos หา subarray A ที่รวม index pos ทำให้ (min(A) × len(A)) สูงสุด ตัวอย่าง nums = [-2, 2, 5, 4], pos = 3 → 8 (subarray [5,4] min=4, size=2, 4×2=8) วิธีแก้ปัญหา Two Pointers Expand from Center: เริ่ม i=j=pos, m = A[pos], ans = A[pos] ขยายซ้ายหรือขวา ทีละขั้น เลือกด้านที่

  13. โปรแกรมนับ sublist ที่มีทั้ง max และ min หลังลบ 1 ตัวใน Python

    คำอธิบายโจทย์ ให้ nums ลบได้สูงสุด 1 ตัว หาจำนวน sublist สูงสุดที่มีทั้งค่า max และ min ของ list ที่เหลือ ตัวอย่าง nums = [3, 2, 6, 2, 4, 10] → 8 (ลบ 10 ได้ [3,2,6,2,4] มี 8 sublists มีทั้ง max=6 และ min=2) วิธีแก้ปัญหา ฟังก์ชัน check(lst): นับ subarray ที่มีทั้ง min และ max ติดตามตำแหน่งล่าสุดขอ

  14. โปรแกรมหาผลรวมความกว้างของทุก subsequence ใน Python

    คำอธิบายโจทย์ ให้รายการ nums width ของ sequence = max - min หาผลรวม width ของทุก subsequence mod 10^9+7 ตัวอย่าง nums = [7, 4, 9] → 15 (subsequences: [7],[4],[9],[7,4],[7,9],[4,9],[7,4,9] widths: 0,0,0,3,2,5,5) วิธีแก้ปัญหา Mathematical Formula + Sorting: เรียง nums จากน้อยไปมาก nums[i] เป็น max

  15. โปรแกรมหา Submatrices ขนาด k×k ที่มีค่าต่ำสุดใน Python

    คำอธิบายโจทย์ ให้เมทริกซ์ 2D และ k คืนเมทริกซ์ที่แต่ละเซลล์ = ค่าต่ำสุดของ submatrix k×k ที่ตรงตำแหน่งนั้น ตัวอย่าง matrix = [[3,5,6],[8,6,5],[4,3,12]], k=2 → [[3,5],[3,3]] วิธีแก้ปัญหา Sliding Window Minimum 2D (Monotonic Queue): ก่อน: หา min ทุก window ขนาด k แนวนอนแต่ละแถว → matrix กลายเป็น mi

  16. โปรแกรมเช็คว่า Edge อยู่ใน Minimum Spanning Tree หรือไม่ใน Python

    คำอธิบายโจทย์ ให้กราฟ edges = [u, v, w] และ edge (a,b) ตรวจสอบว่า (a,b) อยู่ใน MST ใดๆ ได้หรือไม่ (กราฟเชื่อมต่อ และ edge มีอยู่ในกราฟ) ตัวอย่าง edges = [[0,2,100],[1,2,200],[1,3,100],[2,3,300]], a=0, b=2 → True วิธีแก้ปัญหา Cycle Property ของ MST: หา weight w ของ edge (a,b) สร้างกราฟย่อย: เฉพาะ

  17. โปรแกรมเช็คว่าคำศัพท์สามารถจัดเป็นวงกลมได้หรือไม่ใน Python

    คำอธิบายโจทย์ ให้ list ของคำ ตรวจสอบว่าจัดเป็นวงกลมได้ไหม โดยคำ A วางหน้า B ได้ก็ต่อเมื่อตัวอักษรสุดท้ายของ A = ตัวอักษรแรกของ B ใช้ทุกคำครั้งเดียว ตัวอย่าง words = [ant,dog,tamarind,nausea,gun] → True (ant→tamarind→dog→gun→nausea→ant) วิธีแก้ปัญหา Eulerian Circuit ใน Directed Graph: สร้างกราฟ: โ

  18. โปรแกรมหาโหนดพิเศษในต้นไม้ใน Python

    คำอธิบายโจทย์ ให้ tree (adjacency list) และ color ของแต่ละโหนด โหนด N เป็น special ถ้าทุกโหนดใน subtree ของ N มีสี unique (ไม่ซ้ำ) หาจำนวน special nodes ตัวอย่าง tree = [[1,2],[0],[0,3],[2]], colors = [1,2,1,1] → 2 วิธีแก้ปัญหา DFS Post-order + Set Merging (Small-to-Large): DFS จาก root (0) ส่งคื

  19. โปรแกรมหาจำนวนสี่เหลี่ยมจัตุรัสในกริดใน Python

    คำอธิบายโจทย์ ให้กริด p แถว q คอลัมน์ จุดวางเท่าๆ กัน หาจำนวนสี่เหลี่ยมจัตุรัส unique ที่มุมทั้ง 4 อยู่บนจุดกริด (ไม่จำเป็นขนานแกน) mod 10^9+7 ตัวอย่าง p = 4, q = 4 → 20 วิธีแก้ปัญหา สูตรทางคณิตศาสตร์: สำหรับแต่ละขนาด i (1 ถึง min(p,q)-1) จำนวนสี่เหลี่ยม = (p-i) × (q-i) × i รวม: Σ (r-i)×(c-i)×i สำ

  20. โปรแกรมหาจำนวนสตริงขนาดเท่ากันที่ lexicographically น้อยกว่าหรือเท่าและไม่มีตัวอักษรซ้ำติดกันเกิน j ใน Python

    คำอธิบายโจทย์ j ตัว ตอบ mod 10^9+7 ตัวอย่าง i = app, j = 2 → 405 วิธีแก้ปัญหา Digit DP (String DP) + Memoization: dp(pos, bound, last_char, consecutive_count) pos: ตำแหน่งปัจจุบัน, bound: ยังติดขอบเขต i หรือไม่ last_char: ตัวอักษรก่อนหน้า (-1 = เริ่มต้น), consecutive_count: จำนวนติดกัน j → 0 (i

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