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

    มีคน n คน站在แถว เราอยู่ตำแหน่งไม่รู้ แต่นับคนหน้าอย่างน้อย p คน และคนหลังสูงสุด q คน หาจำนวนตำแหน่งที่เป็นไปได้ ตัวอย่าง: n=10, p=2, q=5 → 6 ตำแหน่ง (ดัชนี 0..5) สูตร ตำแหน่งที่เป็นไปได้: ดัชนี 0 ถึง min(q, n-p-1) → จำนวน = min(q+1, n-p) การนำไปใช้ class Solution: def solve(self, n, p, q):

  2. โปรแกรมหากำไรสูงสุดจากการซื้อขายหุ้นครั้งเดียวใน Python

    ให้ลิสต์ราคาหุ้น ซื้อขายได้เพียงครั้งเดียว (ซื้อก่อนขาย) หากำไรสูงสุด ตัวอย่าง: [10,12,9,6,8,12] → 6 (ซื้อ 6 ขาย 12) อัลกอริธึม One Pass ติดตาม min_stock ราคาต่ำสุดที่เคยเห็น แต่ละราคา: อัปเดต max_profit = max(max_profit, price - min_stock) และ min_stock = min(min_stock, price) การนำไปใช้ class So

  3. โปรแกรมตรวจสอบว่ากราฟเป็น bipartite หรือไม่ใน Python

    กราฟไม่มีทิศทาง ตรวจสอบว่าเป็น bipartite ได้ไหม (แบ่งโหนดเป็น 2 เซต ทุกเส้นเชื่อมข้ามเซต) ตัวอย่าง: กราฟ [[1,2,3],[0],[0,4],[0,4],[2,3]] → True (เซต A: 0,4; เซต B: 1,2,3) อัลกอริธึม DFS Coloring สร้าง adjacency list อาร์เรย์ color: -1=ยังไม่ระบาย, 0/1=สี DFS จากทุกโหนดที่ยังไม่มีสี: ระบายลูกด้วยสีต

  4. โปรแกรมหากำไรสูงสุดจากการซื้อขายหุ้นหลายครั้งใน Python

    ให้ลิสต์ราคาหุ้นตามลำดับเวลา ซื้อขายได้หลายครั้ง (ต้องซื้อก่อนขาย) หากำไรสูงสุด ตัวอย่าง: [10,50,30,40,60] → 70 (ซื้อ10ขาย50, ซื้อ30ขาย60) อัลกอริธึม Greedy ราคาเมื่อวาน เทียบเท่ากับซื้อที่谷底 ขายที่ยอดเขา ทุกคู่ การนำไปใช้ prev_price: profit += p - prev_price prev_pri

  5. โปรแกรมตรวจสอบว่าสามารถถึงปลายลิสต์ได้หรือไม่เมื่อเริ่มจากดัชนี k ใน Python

    ให้ลิสต์ nums และดัชนีเริ่มต้น k ที่ตำแหน่ง i กระโดดซ้าย/ขวาได้ nums[i] ขั้น ตรวจสอบว่าถึงดัชนีสุดท้ายได้หรือไม่ ตัวอย่าง: nums=[0,0,2,1,3,3,1,1], k=2 → True (2→4→7) อัลกอริธึม DFS/Stack ใช้ stack tovisit เริ่มจาก k pop ดัชนี ถ้าเป็นดัชนีสุดท้าย → True ถ้ายังไม่เยี่ยม: mark visited, push ดัชนีใหม่

  6. โปรแกรมหาความยาวคำที่ยาวที่สุดที่สร้างได้จากตัวอักษรที่กำหนดใน Python

    ให้ลิสต์คำ words และสตริง letters หาความยาวคำที่ยาวที่สุดใน words ที่สร้างจาก letters ได้ (แต่ละตัวอักษรใช้ได้ครั้งเดียว) ตัวอย่าง: words=[dog,cat,rat,bunny,lion,bat], letters=gabctnyu → 3 (cat หรือ bat) อัลกอริธึม นับความถี่ตัวอักษรใน letters (ref) สำหรับแต่ละคำ: นับความถี่ (w) ถ้าทุกตัวอักษรใน w

  7. โปรแกรมหาผลรวมของอีเล็มน์ต์ที่สร้างรูป Z ในเมทริกซ์ใน Python

    ให้เมทริกซ์ n x n หาผลรวมอีเล็มน์ต์ที่สร้างรูป Z: แถวแรก, แถวสุดท้าย, และแนวทแยงมุม (จากขวาบนไปซ้ายล่าง ยกเว้นมุม) ตัวอย่าง: 4 3 2 9 1 8 2 5 6 → 4+3+2 + 2+5+6 + 1 = 23 อัลกอริธึม ถ้า n ≤ 2: ผลรวมทุกอีเล็มน์ต์ รวมแถวแรก + แถวสุดท้าย + แนวทแยงมุม (i, n-1-i) สำหรับ i=1..n-2 การนำไปใช้ class Solution:

  8. โปรแกรมหาค่าสูงสุดที่ได้จากการเลือกสิ่งของภายในความจุใน Python

    ปัญหา 0/1 Knapsack: ให้ weights, values ความยาวเท่ากัน และความจุ capacity เลือกสิ่งของแต่ชิ้นได้สูงสุด 1 ชิ้น หาค่ารวมสูงสุด ตัวอย่าง: weights=[2,3,4], values=[2,6,4], capacity=6 → 8 (เลือกชิ้นที่ 1 และ 2) Dynamic Programming dp[i][j]: ค่าสูงสุดใช้สิ่งของ i ชิ้นแรก ความจุ j Transition: ไม่เลือก → d

  9. โปรแกรมบวกสตริงไบนารีสองสตริงและคืนค่าเป็นสตริงไบนารีใน C++

    บวกเลขไบนารีที่เก็บเป็นสตริง คืนผลลัพธ์เป็นสตริงไบนารี (ไม่แปลงเป็น int) ตัวอย่าง: 10110 + 10010 = 101000 อัลกอริธึม เดินจากขวาไปซ้าย (LSB ไป MSB) บวกบิตแต่ละตำแหน่ง + carry ผลบิต = sum % 2, carry = sum // 2 สุดท้ายถ้า carry=1 ให้เพิ่มด้านหน้า แล้ว reverse ผลลัพธ์ โค้ด C++ #include = 0 ? b[j] - 0

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

    ให้ลิสต์ nums แสดงเวลาที่รถบัสต้องมาถึงแต่ละป้าย รถบัสวิ่งไปข้างหน้าเท่านั้น หาจำนวนรถบัสน้อยที่สุดที่ครอบคลุมทุกป้าย ตัวอย่าง: [1,2,7,9,3,4] → 2 คัน (คัน 1: 1,2,3,4; คัน 2: 7,9) อัลกอริธึม Greedy เดินจากซ้ายไปขวา ถ้ายังไม่ได้มอบหมายป้ายนี้ ให้สร้างรถบัสใหม่ ปัจจุบัน และยังไม่ถูกมอบหมาย → มอบหมายใ

  11. โปรแกรมหาจำนวนวิธีเดินขึ้นบันไดใน Python

    บันได n ขั้น เดินได้ 1 หรือ 2 ขั้นต่อครั้ง หาจำนวนวิธีเดินถึงขั้น n (ลำดับขั้นตอนต่างกันนับคนละวิธี) mod 1e9+7 ตัวอย่าง: n=5 → 8 วิธี (Fibonacci) Dynamic Programming dp[i]: วิธีเดินถึงขั้น i dp[1]=1, dp[i] = dp[i-1] + dp[i-2] คืน dp[n+1] % MOD การนำไปใช้ MOD = 10**9 + 7 class Solution: def so

  12. โปรแกรมหาจำนวนวิธีเดินขึ้นบันได (ขั้นสูงสุด 3 ขั้นได้สูงสุด k ครั้ง) ใน Python

    บันได n ขั้น เดินได้ 1,2,3 ขั้นต่อครั้ง แต่เดิน 3 ขั้นได้สูงสุด k ครั้ง หาจำนวนวิธีเดินถึงขั้น n ตัวอย่าง: n=5, k=2 → 13 วิธี Dynamic Programming memo[j][i]: วิธีเดิน i ขั้น โดยใช้ขั้น 3 ได้สูงสุด j ครั้ง Base: memo[j][0]=1, [1]=1, [2]=2 Transition: ถ้า i//3 ≤ j → memo[j][i] = memo[j][i-1]+memo[j][

  13. โปรแกรมตรวจสอบว่าสามารถถึงปลายลิสต์ได้หรือไม่เมื่อเริ่มจากดัชนี k ใน Python

    ให้ลิสต์ nums และดัชนีเริ่มต้น k ที่ตำแหน่ง i กระโดดซ้าย/ขวาได้ nums[i] ขั้น ตรวจสอบว่าถึงดัชนีสุดท้ายได้หรือไม่ ตัวอย่าง: nums=[0,0,2,1,3,3,1,1], k=2 → True (2→4→7) อัลกอริธึม DFS/Stack ใช้ stack tovisit เริ่มจาก k pop ดัชนี ถ้าเป็นดัชนีสุดท้าย → True ถ้ายังไม่เยี่ยม: mark visited, push ดัชนีใหม่

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

    ให้ลิสต์ตัวเลข nums หาผลรวมของผลรวมทุก subarray ที่ติดต่อกัน แล้ว mod 1e9+7 ตัวอย่าง: [3,4,6] → subarrays: [3],[4],[6],[3,4],[4,6],[3,4,6] → sum = 43 สูตรคณิตศาสตร์ อีเล็มน์ต์ที่ดัชนี i จะปรากฏใน subarray จำนวน (i+1) * (N-i) ครั้ง (N = ความยาวลิสต์) การนำไปใช้ class Solution: def solve(self, num

  15. โปรแกรมแบ่งสตริงสองสตริงให้แต่ละส่วนเป็น anagram ของกันใน Python

    ให้สตริง s และ t ความยาวเท่ากัน แบ่งเป็น substring คู่ๆ ที่มีขนาดเท่ากันและเป็น anagram หาจุดตัดที่ให้จำนวน partition มากที่สุด ตัวอย่าง: s=bowcattiger, t=owbactietgr → [0,3,5,6,10] (5 partitions: bow/owb, ca/ac, t/t, tige/ietg, r/r) อัลกอริธึม นับความถี่ตัวอักษรของทั้งสองสตริง (ca, cb) ถ้าความถี่ร

  16. โปรแกรมจัดเรียงไพ่เพื่อเปิดเผยในลำดับเพิ่มขึ้นใน Python

    การ์ดจะถูกเปิดเผยโดย: 1) นำไพ่บนสุดออก 2) ไพ่ถัดไปย้ายไปด้านหลัง ทำซ้ำจนหมด จัดเรียงไพ่ให้เปิดเผยได้ตามลำดับ 1,2,3... ตัวอย่าง: [1,2,3,4,5,6,7,8] → [1,5,2,7,3,6,4,8] อัลกอริธึมจำลองด้วย Queue เรียงไพ่จากน้อยไปมาก สร้าง index queue: 0,1,2... แล้วจำลองกระบวนการ: pop ซ้าย → เก็บใน order, pop ซ้าย → pu

  17. โปรแกรมหาโหนดกลางของ singly linked list ใน Python

    สมมติว่ามี singly linked list node เราต้องหาค่าของโหนดกลาง ถ้ามีโหนดกลางสองตัว คืนค่าตัวที่สอง ต้องพยายามแก้ในหนึ่งรอบ (single pass) เช่น ถ้าอินพุตคือ [5,9,6,4,8,2,1,4,5,2] ผลลัพธ์จะเป็น 2 ขั้นตอนการแก้ปัญหา p := node, d := 0, l := 0 while node ไม่ใช่ null ถ้า d != 2 node := node.next, l += 1, d +=

  18. โปรแกรมหาองค์ประกอบมากกว่าทางขวาแบบวนรอบใน Python

    สมมติว่ามีรายการตัวเลข nums เราต้องหารายการใหม่ขนาดเท่าเดิม โดยค่าที่ดัชนี i คือองค์ประกอบถัดไปที่มากกว่า nums[i] ทางขวา โดยวนกลับมาหน้ารายการเมื่อจำเป็น หากไม่มีตัวมากกว่า ตั้งค่าเป็น -1 เช่น ถ้าอินพุตคือ [4, 5, 1, 3] ผลลัพธ์จะเป็น [5, -1, 3, 4] ขั้นตอนการแก้ปัญหา n := ขนาดของ a stack := สแต็ก ใส่

  19. โปรแกรมหาผลรวมสูงสุดของเส้นทางใดๆ ในต้นไม้ไบนารีใน Python

    สมมติว่ามีต้นไม้ไบนารี เราต้องหาผลรวมสูงสุดของเส้นทางใดๆ ที่ไปจากรากถึงใบ เช่น ถ้าอินพุตเป็นต้นไม้ดังภาพ ผลลัพธ์จะเป็น 29 เส้นทาง 5-9-7-8 ขั้นตอนการแก้ปัญหา กำหนดฟังก์ชัน walk() รับ node, s ถ้า node เป็น null max_sum := max(max_sum, s) คืนค่า s := s + node.data walk(left of node, s), walk(right of

  20. โปรแกรมหาจำนวนเหรียญสูงสุดที่เก็บได้ใน Python

    สมมติว่ามีเมทริกซ์ 2D ที่แต่ละเซลล์เก็บเหรียญ เริ่มจาก [0,0] เคลื่อนที่ได้เฉพาะขวาหรือลง หาจำนวนเหรียญสูงสุดที่เก็บได้เมื่อถึงมุมขวาล่าง เช่น ถ้าอินพุตคือ [[1,4,2,2],[6,0,0,5]] ผลลัพธ์จะเป็น 14 ทางคือ [1,4,2,2,5] ขั้นตอนการแก้ปัญหา for r ใน 1 ถึง จำนวนแถว A[r][0] += A[r-1][0] for c ใน 1 ถึง จำนวนคอ

Total 9001 -คอมพิวเตอร์  FirstPage PreviousPage NextPage LastPage CurrentPage:172/451  20-คอมพิวเตอร์/Page Goto:1 166 167 168 169 170 171 172 173 174 175 176 177 178