Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python
Python
  1. โปรแกรมตรวจสอบ Tree ว่า Node ทุกตัว = ผลรวมลูก (Children Sum Property)

    ปัญหา ตรวจสอบ Binary Tree ว่าทุก node (ยกเว้น leaves) มีค่าเท่ากับผลรวมของลูกซ้าย + ลูกขวา ตัวอย่าง: Root=18, Left=8, Right=10, Left children=3,5 → 8=3+5, 18=8+10 → True วิธีแก้: Recursive DFS อัลกอริทึม ฟังก์ชัน dfs(root) ถ้า root เป็น None → True ถ้าเป็น leaf (ไม่มีลูก) → True left_val = root.

  2. โปรแกรมตรวจสอบ Tree สองต้นว่า Swap ได้กันหรือไม่ (Flip Equivalent)

    ปัญหา กำหนด Tree 2 ต้น ตรวจสอบว่า tree แรกสามารถกลายเป็น tree ที่สองได้โดยการ swap left/right children ของ node ใดๆ กี่ครั้งก็ได้ (Flip Equivalent Trees) ตัวอย่าง: Tree1: 2→R→4→L=3,R=5 | Tree2: 2→L→4→L=3,R=5 → True (swap roots children) วิธีแก้: BFS Level-by-Level Comparison เปรียบเทียบแต่ละ level

  3. โปรแกรมตรวจสอบ Symmetric Tree (กระจก) ใน Python

    ปัญหา ตรวจสอบ Binary Tree ว่าเป็น Symmetric Tree หรือไม่ (mirror image ของตัวเอง) Tree แรก: Symmetric | Tree ที่สอง: ไม่ Symmetric วิธีแก้: Recursive Mirror Check เปรียบเทียบ subtree ซ้าย-ขวา แบบ crossed อัลกอริทึม ฟังก์ชัน solve(node1, node2) ทั้งคู่ None → True ตัวใดตัวหนึ่ง None → False ค่าไม

  4. โปรแกรมหาจำนวน Operation น้อยที่สุดจาก Start ถึง Target (×2, -1)

    ปัญหา กำหนด start และ end หาจำนวน operation น้อยที่สุดเพื่อแปลง start → end ด้วย operation 2 อย่าง: 1. ลดลง 1 (decrement) 2. คูณ 2 (multiply) ตัวอย่าง: start=2, end=7 → 3 operations 2 ×2 = 4, ×2 = 8, -1 = 7 วิธีแก้: Greedy จาก Target ย้อนกลับ (Reverse Thinking) แทนที่จะคิดจาก start → end (branch f

  5. โปรแกรมจัดตารางงาน (Task Scheduling) ให้เวลาน้อยที่สุด พร้อม Cooldown (Python)

    ปัญหา กำหนด tasks list (ตัวเลข = task type) และ cooldown k แต่ละ task ใช้ 1 นาที ต้องรอ k นาทีระหว่าง task ประเภทเดียวกัน หาเวลาน้อยที่สุดทำให้เสร็จทั้งหมด ตัวอย่าง: tasks=[2,2,2,3,3,2], k=1 → 7 นาที Optimal: [2, 3, 2, 3, 2, WAIT, 2] วิธีแก้: Greedy + Max Heap (Priority Queue) ทุกๆ รอบ เลือก task

  6. โปรแกรมหาเส้นทางสั้นสุดใน Maze ไปมุมล่างขวา (Python BFS)

    ปัญหา กำหนด 2D grid maze: 0 = ทางเดิน, 1 = ผนัง เริ่มที่ (0,0) หาจำนวนเซลล์น้อยที่สุดเพื่อไป (R-1, C-1) ถ้าไม่ถึง → -1 ตัวอย่าง: 3x3 grid → 5 steps วิธีแก้: BFS (Breadth-First Search) BFS ให้ shortest path ใน unweighted graph โดยอัตโนมัติ อัลกอริทึม Queue เก็บ (row, col, distance) เริ่มที่ (0,0,

  7. โปรแกรมหาจุดพบปะที่ลดระยะทางรวมน้อยที่สุดใน Grid (Python)

    ปัญหา กำหนด 2D matrix: 0 = ว่าง, 1 = ผนัง, 2 = คน คนเดินได้ 4 ทิศทาง (บน/ล่าง/ซ้าย/ขวา) ไม่เดินทะลุผนัง หาจุดพบปะ (ไม่ใช่ผนัง) ที่ minimize ผลรวมระยะทางจากทุกคน ตัวอย่าง: 3x4 grid → จุดที่ดีที่สุด = มุมล่างขวา, ระยะทางรวม = 7 วิธีแก้: Multi-source BFS จากแต่ละคน รัน BFS จากแต่ละคน (ค่า 2) คำนวณระย

  8. โปรแกรมหาผลรวมค่าทุก Node ใน Binary Tree (Python)

    ปัญหา กำหนด Binary Tree หาผลรวมค่าของทุก node ตัวอย่าง: Tree: 2→right→4→left=3, right=5 → Sum = 2+4+3+5 = 14 วิธีแก้: Recursive DFS อัลกอริทึม ฟังก์ชัน recurse(node): คืนค่า sum ของ subtree rooted at node val = node.val ถ้ามี left child: val += recurse(left) ถ้ามี right child: val += recurse(rig

  9. โปรแกรมเดินทางใน Binary Tree ตามคำสั่ง L/R/U (Python)

    ปัญหา กำหนด Binary Tree และ list moves = [R, L, U] เริ่มจาก root: R = ไป right child, L = ไป left child, U = กลับไป parent หาค่า node ที่หยุดสุดท้าย ตัวอย่าง: Tree: 2→right→4→left→3, moves=[R,R,U,L] → 3 วิธีแก้: เก็บ Path (Stack) ใช้ list `past` เก็บ node ที่ผ่านมา เพื่อกลับไป parent ได้ อัลกอริท

  10. โปรแกรมนับจำนวน Palindrome ที่ได้จากการ Trim ด้านซ้าย-ขวา (Python)

    ปัญหา กำหนดสตริง s หาจำนวนวิธีที่ได้ palindrome โดยการ ตัดทิ้ง ตัวอักษรจากด้านซ้ายและ/หรือขวา (substring ที่เป็น palindrome) ตัวอย่าง: s=momo → 6 วิธี Palindromes: mom, omo, o, o, m, m (นับซ้ำได้เพราะตำแหน่งต่างกัน) วิธีแก้: Expand Around Center ขยายจากจุดกลางทุกตำแหน่ง (odd length และ even length

  11. โปรแกรมตรวจสอบ Binary Tree สองต้นว่าเหมือนกันทุกอย่างหรือไม่ (Python)

    ปัญหา กำหนด Binary Tree 2 ต้น ตรวจสอบว่า เหมือนกันทุกอย่าง (Identical/Twin Trees) หมายถึง โครงสร้างเหมือนกัน และค่าในทุก node เหมือนกัน วิธีแก้: Recursive Comparison เปรียบเทียบ node คู่กันแบบ preorder traversal อัลกอริทึม ถ้าทั้งคู่ None → True ถ้าตัวใดตัวหนึ่ง None → False ถ้าค่าไม่เท่ากัน → Fa

  12. โปรแกรมหาผลรวมความยาว Subarray 2 ชุดไม่ทับซ้อน ที่ผลรวมเท่ากับ k (Python)

    ปัญหา กำหนด list nums และค่า k หา subarray 2 ชุดที่ไม่ทับซ้อน (non-overlapping) ซึ่งแต่ละชุดมีผลรวม = k คืนค่า ผลรวมความยาว ของทั้งสองชุด ที่น้อยที่สุด ถ้าไม่มี → -1 ตัวอย่าง: nums=[7,10,-2,-1,4,3], k=7 → 3 เลือก [7] (len=1) และ [4,3] (len=2) รวม = 3 ไม่เลือก [10,-2,-1] (len=3) เพราะยาวกว่า วิธีแก

  13. โปรแกรมตรวจสอบว่ารถรับส่งผู้โดยสารได้ครบทุกคนหรือไม่ (Python)

    ปัญหา กำหนด trips = [[start_x, end_x, num_passengers], ...] และ capacity ของรถ รถเริ่มที่ x=0 เคลื่อนที่ไปทางขวาเท่านั้น ต้องรับ-ส่งผู้โดยสารครบทุกการเดินทาง ตรวจสอบว่า capacity พอหรือไม่ ตัวอย่าง: trips=[[1,25,2],[3,4,3],[5,12,3]], capacity=6 → True วิธีแก้: Sweep Line Algorithm (Event-based) แปล

  14. โปรแกรมตรวจสอบความถี่ของทุกค่าใน List ว่า Unique หรือไม่ (Python)

    ปัญหา กำหนด list nums (บวก/ลบ) ตรวจสอบว่า จำนวนครั้งที่เกิด ของแต่ละค่าเป็น unique หรือไม่ (ไม่มีค่าซ้ำกัน) ตัวอย่าง: nums = [6, 4, 2, 9, 4, 2, 2, 9, 9, 9] → True เพราะ: 6→1 ครั้ง, 4→2 ครั้ง, 2→3 ครั้ง, 9→4 ครั้ง (ทุกค่าต่างกัน) วิธีแก้: ใช้ Counter นับความถี่แต่ละค่า → dictionary {value: count}

  15. โปรแกรมตรวจสอบ Binary Tree ว่า Node ทุกตัวมีค่าเท่ากันหรือไม่ (Python)

    ปัญหา กำหนด Binary Tree ตรวจสอบว่าทุก node มีค่าเท่ากันทุกตัวหรือไม่ วิธีแก้: Recursive DFS เปรียบเทียบค่าแต่ละ node กับค่าราก (root value) ทั้งต้นไม้ อัลกอริทึม ฟังก์ชัน solve(root, val=None) ถ้า root เป็น None → True (empty tree valid) ถ้า val ยังไม่ได้ตั้ง → val = root.val คืนค่า: root.val ==

  16. โปรแกรมหาเลข Upside-down Numbers ความยาว n ใน Python

    ปัญหา หาเลข upside-down numbers ความยาว n - เลขที่อ่านเหมือนเดิมเมื่อหมุน 180 องศา ตัวอย่าง: n=2 → [11, 69, 88, 96] คู่ตัวเลขที่หมุนได้ ตัวเลขหมุนเป็น 00 11 69 88 96 วิธีแก้: Recursive Generation สร้างจากกลางออกไป (build from middle) โดยเพิ่มคู่ตัวเลขที่สองข้าง อัลกอริทึม ฟังก์ชัน middle(x)

  17. โปรแกรมตรวจสอบ List ว่า Valid ตามกฎการจัดกลุ่ม (Python)

    ปัญหา กำหนด list ของตัวเลข nums ตรวจสอบว่าสามารถจัดกลุ่มทุกตัวเลขได้ตามกฎ 3 ข้อ: คู่ติดกัน (a, a) สามตัวติดกันเหมือนกัน (a, a, a) สามตัวติดกันเรียงลำดับ (a, a+1, a+2) ตัวอย่าง: nums = [7, 7, 3, 4, 5] → True (จัดกลุ่ม [7,7] และ [3,4,5]) วิธีแก้: Dynamic Programming ใช้ DP array ขนาด n+1 โดย dp[i]

  18. ถ่ายรูปหน้าจอส่วนหนึ่ง (Partial Screenshot) ด้วย Selenium Python

    Selenium 4+ รองรับการถ่ายรูปเฉพาะ WebElement โดยตรง ด้วยเมธอด .screenshot() Syntax element = driver.find_element_by_xpath(//img[@title=Tutorialspoint]) element.screenshot(logo.png) ตัวอย่างเต็ม from selenium import webdriver driver = webdriver.Chrome(executable_path=C:\\chromedriver.exe) driver.m

  19. รอให้หน้าเว็บโหลดเสร็จด้วย Selenium WebDriver Python (Explicit Wait)

    ใช้ Explicit Wait** ร่วมกับ **Expected Conditions** เพื่อรอจนกว่าเงื่อนไขจะเป็นจริง (เช่น element ปรากฏ) แทนการรอเวลาคงที่ แนวคิด WebDriverWait - คลาสสำหรับรอพร้อม timeout ExpectedConditions - เงื่อนไขที่คาดหวัง (presence, visibility, clickable, etc.) By - กลุ่ม locator strategies ตัวอย่าง: รอจน

  20. ตั้งค่า Default Timeout ใน Selenium Python WebDriver

    Selenium มี 2 วิธีตั้งค่า timeout เริ่มต้น: 1. set_page_load_timeout() - Timeout การโหลดหน้าเว็บ driver.set_page_load_timeout(5) # วินาที ถ้าโหลดเกิน 5 วินาที จะโยน TimeoutException 2. implicitly_wait() - Implicit Wait (Global Wait) driver.implicitly_wait(5) # วินาที รอ element ทุกตัวสูงสุด 5 วิ

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