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

    สมมติว่าเรามีรายการตัวเลขเรียงลำดับ stones แสดงตำแหน่งหินในแม่น้ำ ต้องข้ามไปหินสุดท้าย ในแต่ละขั้นตอน กระโดดได้ k-1, k, k+1 หน่วย โดย k คือระยะกระโดดครั้งก่อน ตรวจสอบว่าข้ามได้หรือไม่ เช่น stones = [0, 1, 3, 4, 5, 6, 8, 9, 13] ผลลัพธ์ = True เส้นทาง: 0→1 (1), 1→3 (2), 3→5 (2), 5→8 (3), 8→13 (5) ขั้น

  2. โปรแกรมนับจำนวนการสลับเพื่อรวม 1 ให้อยู่ติดกันในสตริงไบนารีใน Python

    สมมติว่าเรามีสตริงไบนารี และสามารถสลับบิตใดๆ ก็ได้สองตำแหน่ง ต้องการหาจำนวนการสลับขั้นต่ำเพื่อให้ 1 ทั้งหมดอยู่ติดกัน เช่น s = 0111001 ผลลัพธ์ = 1 สลับได้ 0111001 → 1111000 ขั้นตอนการแก้ปัญหา (Sliding Window + Prefix Sum) data := list ของ 0 และ 1 จากสตริง one := จำนวน 1 ทั้งหมด, n := len(data) สร้า

  3. โปรแกรมหาต้นทุนขั้นต่ำเพื่อถึงดัชนีสุดท้ายของสองรายการใน Python

    สมมติว่าเรามีสองรายการ nums0 และ nums1 ความยาวเท่ากัน และค่า d (ระยะกระโดดสูงสุด) และ c (ค่าใช้จ่ายในการสลับรายการ) เริ่มจากดัชนี 0 ของรายการใดรายการหนึ่ง ต้องการไปถึงดัชนีสุดท้ายของรายการใดรายการหนึ่ง ในแต่ละรอบ สามารถเลือกสลับรายการ (จ่ายค่า c) แล้วกระโดดไปข้างหน้าสูงสุด d ตำแหน่ง ค่าใช้จ่ายในการล

  4. โปรแกรมนับจำนวนลำดับย่อยเพิ่มขึ้นขนาด k ใน Python

    สมมติว่าเรามีรายการตัวเลข nums และค่า k เราต้องการหาจำนวนลำดับย่อย (subsequences) ขนาด k ที่เพิ่มขึ้นอย่างเคร่งครัด (strictly increasing) ถ้าคำตอบมากเกินไป modulo 10^9+7 เช่น nums = [2, 3, 4, 1] k = 2 ผลลัพธ์ = 3 ลำดับย่อยขนาด 2: [2,3], [3,4], [2,4] ขั้นตอนการแก้ปัญหา (DP Bottom-up) m := 10^9 + 7 d

  5. โปรแกรมหากำไรสูงสุดจากการจัดตารางงานใน Python

    สมมติว่าเรามีรายการช่วงเวลา (intervals) แต่ละช่วงมี 3 ค่า [start, end, profit] เราสามารถทำงานได้ทีละอย่าง ให้หากำไรสูงสุดที่ทำได้ เช่น intervals = [[1, 2, 100], [3, 5, 40], [6, 19, 150], [2, 100, 250]] ผลลัพธ์ = 350 เลือกงาน [1, 2, 100] และ [2, 100, 250] ขั้นตอนการแก้ปัญหา (DP + Group by End Time)

  6. โปรแกรมหาลำดับย่อยเล็กซิโครกราฟิกที่เล็กที่สุดขนาด k ใน Python

    สมมติว่าเรามีรายการตัวเลข nums และค่า k เราต้องการหาลำดับย่อย (subsequence) ขนาด k ที่เล็กที่สุดในลำดับเล็กซิโครกราฟิก (lexicographically smallest) เช่น ถ้าข้อมูลนำเข้าคือ nums = [2, 3, 1, 10, 3, 4] k = 3 ผลลัพธ์จะเป็น [1, 3, 4] ขั้นตอนการแก้ปัญหา (Greedy + Two Pointers) l := len(nums), r := k - 1

  7. โปรแกรมนับจำนวนสับลิสต์ที่มีค่าที่ไม่ซ้ำกันพอดี k ค่าใน Python

    สมมติว่าเรามีรายการตัวเลข nums และค่า k เราต้องการหาจำนวนสับลิสต์ (sublists) ที่มีค่าที่ไม่ซ้ำกัน (unique values) พอดี k ค่า เช่น ถ้าข้อมูลนำเข้าคือ nums = [2, 2, 3, 4] k = 2 ผลลัพธ์จะเป็น 3 เนื่องจากมีสับลิสต์: [2, 2, 3], [2, 3], [3, 4] ขั้นตอนการแก้ปัญหา (Sliding Window + At Most K) ฟังก์ชัน coun

  8. โปรแกรมนับจำนวนวิธีเดินจากมุมซ้ายบนไปมุมขวาล่างในเมทริกซ์ใน Python

    สมมติว่าเรามีเมทริกซ์ไบนารีขนาด N x M โดย 0 = ช่องว่าง, 1 = ช่องบล็อก เริ่มจากมุมซ้ายบน (0,0) ต้องการหาจำนวนวิธีเดินไปมุมขวาล่าง (N-1, M-1) เดินได้เฉพาะขวาและล่าง ถ้าคำตอบมากเกินไป ให้ modulo 10^9+7 เช่น เมทริกซ์: 0 0 1 0 0 0 1 1 0 ผลลัพธ์ = 2 วิธี: [Right, Down, Right, Down] และ [Down, Right, Right

  9. โปรแกรมหาย่อยต้นไม้ค้นหาไบนารีที่ใหญ่ที่สุดใน Python

    สมมติว่าเรามีต้นไม้ไบนารี (binary tree) เราต้องการหาย่อยต้นไม้ (subtree) ที่ใหญ่ที่สุด (มีโหนดมากที่สุด) ซึ่งเป็น Binary Search Tree (BST) เช่น ถ้าต้นไม้รากคือ 12 ซ้าย 3 ขวา 5 (ซ้าย 4 ขวา 6) ผลลัพธ์จะเป็นย่อยต้นไม้ที่รากคือ 5 ประกอบด้วย 4, 5, 6 ขั้นตอนการแก้ปัญหา (Inorder Traversal + Check Sorted)

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

    สมมติว่าเรามีรายการตัวเลข nums และค่า k เราต้องการหาผลรวมมากที่สุดของ 3 สับลิสต์ (sublists) ที่ไม่ทับซ้อนกัน (non-overlapping) แต่ละตัวมีขนาด k เช่น ถ้าข้อมูลนำเข้าคือ nums = [2, 2, 2, -6, 4, 4, 4, -8, 3, 3, 3] k = 3 ผลลัพธ์จะเป็น 27 เนื่องจากเลือกได้ [2, 2, 2], [4, 4, 4], [3, 3, 3] ผลรวมรวม = 27 ขั

  11. โปรแกรมแบ่งรายการเป็นสับลิสต์เพิ่มขึ้นอย่างเคร่งครัดขนาดมากกว่า k ใน Python

    สมมติว่าเรามีรายการตัวเลข nums และค่า k เราต้องตรวจสอบว่าสามารถแบ่งรายการเป็น sublists ได้หรือไม่ โดยแต่ละ sublist ต้องมีความยาว ≥ k และเป็น strictly increasing (ไม่ต้องติดกันในรายการเดิม) เช่น ถ้าข้อมูลนำเข้าคือ nums = [6, 7, 5, 10, 13] k = 2 ผลลัพธ์จะเป็น True เนื่องจากแบ่งได้เป็น [5, 6] และ [7, 1

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

    สมมติว่าเรามีรายการตัวเลข nums ที่เรียงลำดับไม่ลดลง (non-decreasing) เราต้องตรวจสอบว่าสามารถแบ่งเป็น subsequences ได้หรือไม่ โดยแต่ละ subsequence ต้องมีความยาวอย่างน้อย 3 และเป็นตัวเลขเพิ่มขึ้นติดต่อกัน (consecutive increasing) เช่น ถ้าข้อมูลนำเข้าคือ nums = [2, 3, 4, 4, 5, 6, 7] ผลลัพธ์จะเป็น True

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

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

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

    สมมติว่าเรามีรายการตัวเลขชื่อ nums เราต้องการหาความยาวของลำดับย่อยเลขคณิต (arithmetic subsequence) ที่ยาวที่สุด ลำดับเลขคณิตคือลำดับที่ความต่างระหว่างสมาชิกติดกันคงที่ เช่น ถ้าข้อมูลนำเข้าคือ nums = [1, 4, 7, 10, 13, 20, 16] ผลลัพธ์จะเป็น 6 เนื่องจากลำดับย่อย [1, 4, 7, 10, 13, 16] เป็นเลขคณิตที่ความ

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

    สมมติว่าเรามีสตริงสามตัว s1, s2, s3 เราต้องการหาความยาวของลำดับย่อยร่วม (common subsequence) ที่ยาวที่สุดของทั้งสาม เช่น ถ้าข้อมูลนำเข้าคือ s1 = ababchemxde, s2 = pyakcimde, s3 = oauctime ผลลัพธ์จะเป็น 4 เนื่องจากลำดับย่อยร่วมยาวที่สุดคือ acme ขั้นตอนการแก้ปัญหา (3D Dynamic Programming) m := len(s1

  16. โปรแกรมหาความยาวของเส้นทางที่ผลรวมเป็นเลขคู่ในต้นไม้ไบนารีใน Python

    สมมติว่าเรามีต้นไม้ไบนารี (binary tree) เราต้องการหาความยาวของเส้นทางที่มีผลรวมเป็นเลขคู่ (even sum) เช่น ถ้าข้อมูลนำเข้าตามรูปภาพ ผลลัพธ์จะเป็น 5 เนื่องจากเส้นทางคือ [5, 2, 4, 8, 5] ผลรวม = 24 (เลขคู่) ขั้นตอนการแก้ปัญหา (DFS ส่งค่าคู่) ฟังก์ชัน dfs(node) คืนคู่ (even_len, odd_len) คือความยาวเส้นท

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

    สมมติว่าเรามีเมทริกซ์ 2 มิติ เราต้องการหาความยาวของเส้นทางที่เพิ่มขึ้นอย่างเคร่งครัด (strictly increasing path) สามารถเคลื่อนที่ได้ 4 ทิศทาง: บน, ล่าง, ซ้าย, ขวา (ไม่ได้ทแยง) เช่น ถ้าข้อมูลนำเข้าคือ: 2 4 6 1 5 7 3 3 9 ผลลัพธ์จะเป็น 6 เนื่องจากเส้นทางที่ยาวที่สุดคือ [1, 2, 4, 6, 7, 9] ขั้นตอนการแก้ปั

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

    สมมติว่าเรามีสตริงตัวพิมพ์เล็ก s เราต้องการหาความยาวของลำดับย่อย (subsequence) แบบพาลินโดรมที่ยาวที่สุดใน s เช่น ถ้าข้อมูลนำเข้าคือ s = aolpeuvekyl ผลลัพธ์จะเป็น 5 เนื่องจากพาลินโดรมคือ level ขั้นตอนการแก้ปัญหา (Dynamic Programming แบบ Top-down) n := len(s) ฟังก์ชัน dp(i, j): ถ้า i == j คืน 1

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

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

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

    สมมติว่าเรามีสตริง s ซึ่งสามารถหมุน (rotate) ที่จุดใดจุดหนึ่งได้เพียงครั้งเดียว เราต้องการหาความยาวของสตริงย่อยแบบพาลินโดรม (palindromic substring) ที่ยาวที่สุดที่ได้จากการทำเช่นนี้ เช่น ถ้าข้อมูลนำเข้าคือ s = elklev ผลลัพธ์จะเป็น 5 เนื่องจากเราสามารถหมุนระหว่าง el และ klev เพื่อได้ levelk สตริงย่อย

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