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

    โจทย์: กำหนดอาร์เรย์ หา |L[i] - R[i]| สูงสุด โดย L[i] = ตัวเลขน้อยกว่า a[i] ใกล้สุดด้านซ้าย (0 ถ้าไม่มี), R[i] = ตัวเลขน้อยกว่า a[i] ใกล้สุดด้านขวา (0 ถ้าไม่มี) ตัวอย่าง: A=[3,5,9,8,8,10,4] → L=[0,3,5,5,5,8,3], R=[0,4,8,4,4,4,0] → max |L-R| = |8-4| = 4 อัลกอริทึม Monotonic Stack ฟังก์ชัน left_sma

  2. หาระยะทางสูงสุดระหว่างเมืองกับสถานีที่ใกล้ที่สุดใน Python

    โจทย์: มี N เมือง (0 ถึง N-1) และรายการเมืองที่มีสถานี หาระยะทางสูงสุดจากเมืองใดเมืองหนึ่งไปสถานีที่ใกล้ที่สุด ตัวอย่าง: N=6, stations=[2,4] → เมือง 0 ห่าง 2, เมือง 1 ห่าง 1, เมือง 3 ห่าง 1, เมือง 5 ห่าง 1 → max = 2 อัลกอริทึม O(N) สร้าง boolean array station_present ขนาด N เดินสแกนซ้ายไปขวา นับร

  3. หาลำดับ Snake ยาวที่สุดในกริดตัวเลข (Python)

    โจทย์: กำหนดกริดตัวเลข หา Snake sequence ยาวที่สุด (เคลื่อนที่ขวาหรือลงได้ ถ้าตัวเลขต่างกัน ±1) ตัวอย่าง: กริด 4×4 → snake ยาว 6: 10(0,0)→9(1,0)→8(1,1)→7(1,2)→6(1,3)→7(2,3)→8(3,3) อัลกอริทึม Dynamic Programming DP[i][j] = ความยาว snake สูงสุดที่จบที่ (i,j) DP[i][j] = max(DP[i-1][j], DP[i][j-1]) +

  4. หาค่า N สูงสุดที่ผลรวมกำลังสอง 1 ถึง N ไม่เกิน X ใน Python

    โจทย์: กำหนด X หา N สูงสุดที่ 1² + 2² + ... + N² ≤ X สูตร: ผลรวมกำลังสอง = N(N+1)(2N+1)/6 7 อัลกอริทึม Binary Search low=1, high=100000 (ค่าสูงสุดที่เป็นไปได้) mid = (low+high)//2 ถ้า sum_of_squares(mid) ≤ X → N=mid, low=mid+1 มิฉะนั้น high=mid-1 ตัวอย่างโค้ด def sum_of_squares(N): return

  5. หาจำนวนการดำเนินการสูงสุดลด N ให้เหลือ 1 ใน Python

    โจทย์: N = P! / Q! ลด N เป็น 1 โดยแทนที่ N ← N/X เมื่อ X หาร N ลงตัว หาจำนวนขั้นตอนสูงสุด (คือ จำนวนเฉพาะในการแยกตัวประกอบของ N) ตัวอย่าง: P=7, Q=4 → N = 7!/4! = 5×6×7 = 210 = 2×3×5×7 → 4 ขั้นตอน อัลกอริทึม: Sieve + Prefix Sum Sieve คำนวณจำนวนเฉพาะในการแยกตัวประกอบของทุกตัวเลข ≤ N (factors[i]) fa

  6. หาคะแนนสูงสุดจากการลบอิลิเมนต์ในอาร์เรย์ (Python)

    โจทย์: กำหนดอาร์เรย์ A, ตัวเลข l, r เลือก ax ลบออก ได้คะแนน ax พร้อมลบ ax+1...ax+r และ ax-1...ax-l ด้วย หาคะแนนรวมสูงสุด ตัวอย่าง: A=[2,4,3,10,5], l=1, r=2 → output=18 อัลกอริทึม Dynamic Programming คล้ายปัญหา Delete and Earn / House Robber แปลงเป็นปัญหาเลือกตัวเลขไม่ติดกัน นับความถี่แต่ละค่า (c

  7. หาค่ามัธยฐานของ BST ใน O(n) time และ O(1) space ด้วย Python

    โจทย์: หาค่ามัธยฐาน (median) ของ Binary Search Tree โดยใช้เวลา O(n) และพื้นที่ O(1) (Morris Inorder Traversal) นิยาม: จำนวนโหนดคี่ → median = โหนดที่ (n+1)/2, จำนวนโหนดคู่ → median = (โหนด n/2 + โหนด n/2+1) / 2 อัลกอริทึม Morris Inorder Traversal นับจำนวนโหนดทั้งหมด (node_count) ด้วย Morris Trave

  8. หาต้นทุนปรับเปลี่ยนขั้นต่ำของอาร์เรย์ (Minimum Adjustment Cost) ใน Python

    โจทย์: กำหนดอาร์เรย์ A และ target ปรับค่าแต่ละตัวให้ผลต่างระหว่างติดกัน ≤ target ลดผลรวม |A[i] - Anew[i]| ให้น้อยที่สุด ตัวอย่าง: A=[56,78,53,62,40,7,26,61,50,48], target=20 → output=35 (หมายเหตุ: ต้นฉบับเขียน 25 แต่โค้ดให้ 35) อัลกอริทึม Dynamic Programming DP[i][v] = ต้นทุนน้อยที่สุดสำหรับ prefi

  9. หาเวลาน้อยที่สุดในการทำงานทั้งหมดภายใต้เงื่อนไข (Python)

    โจทย์: มีงานหลายงาน แต่ละงานใช้เวลาต่างกัน มี k คน ทำงานคนละหน่วยใช้เวลา t หาเวลารวมน้อยที่สุด โดย: 1) คนละคนทำงานติดกัน (contiguous) 2) งานหนึ่งไม่สามารถแบ่งให้หลายคน ตัวอย่าง: k=4, t=5, jobs=[12,6,9,15,5,9] → จัดกลุ่ม [12], [6,9], [15], [5,9] → max sum = 15 → เวลา = 15×5 = 75 อัลกอริทึม: Binary

  10. หาตัวเลขที่หายไปในอาร์เรย์เรียงลำดับติดต่อกันใน Python

    โจทย์: อาร์เรย์ A ขนาด n มีตัวเลข unique เรียงน้อยไปมาก แต่ขาด 1 ตัว หาตัวที่หายไป (O(log n) ด้วย Binary Search) ตัวอย่าง: [1,2,3,4,5,6,7,9] → หายไปคือ 8 อัลกอริทึม Binary Search สังเกต: ในอาร์เรย์สมบูรณ์ A[i] - i = A[0] (คงที่) หากขาดตัวหนึ่ง ความต่างจะเปลี่ยนหลังจุดที่ขาด left=0, right=n-1 mid

  11. หา N จำนวนที่ต่างกันซึ่ง Bitwise OR เท่ากับ K ใน Python

    โจทย์: กำหนด N และ K หา N จำนวนที่ไม่ซ้ำกัน ที่ bitwise OR ของทั้งหมดเท่ากับ K ถ้าไม่ได้ → คืน -1 ตัวอย่าง: N=4, K=6 (binary 110) → [6, 0, 1, 2] เพราะ 6|0|1|2 = 6 อัลกอริทึม นับจำนวนบิต 1 ใน K (cnt_k) จำนวนชุดย่อยของบิต 1 = 2^cnt_k ต้อง ≥ N ไม่งั้น impossible สร้างตัวเลขจากชุดย่อยของบิตที่เป็น 1

  12. หา permutation ที่ n ในลำดับเลขโครงภาษา (Lexicographic) ของสตริงใน Python

    โจทย์: กำหนดสตริงตัวพิมพ์เล็ก หา permutation ที่ n (1-indexed) เมื่อเรียงลำดับแบบ dictionary order ตัวอย่าง: pqr, n=3 → permutations: [pqr, prq, qpr, qrp, rpq, rqp] → คำตอบ qpr อัลกอริทึม (Factorial Number System) คำนวณแฟกทอเรียลล่วงหน้า นับความถี่ตัวอักษร (occurrence array) สร้างผลลัพธ์ทีละตัว:

  13. หาพจน์ที่ n ของความสัมพันธ์แบบเวียนเกิด (Recurrence Relation) ใน Python

    โจทย์: กำหนดลำดับ bₙ โดย b₁ = 1 และ bₙ₊₁ / bₙ = 2ⁿ หา log₂(bₙ) สำหรับ n ที่กำหนด การแก้คณิตศาสตร์ bₙ₊₁/bₙ = 2ⁿ bₙ/bₙ₋₁ = 2ⁿ⁻¹ ... b₂/b₁ = 2¹ คูณทุกสมการ: bₙ₊₁/b₁ = 2^(1+2+...+n) = 2^(n(n+1)/2) ∴ bₙ₊₁ = 2^(n(n+1)/2) (เนื่องจาก b₁ = 1) แทน n → n-1: bₙ = 2^(n(n-1)/2) log₂(bₙ) = n(n-1)/2 ตัวอย่างโค้ด

  14. หาตัวเลขต้นฉบับจากอาร์เรย์ GCD ของทุกคู่ใน Python

    โจทย์: กำหนดอาร์เรย์ A ที่เก็บค่า GCD ของทุกคู่ที่เป็นไปได้ของอาร์เรย์ต้นฉบับ (ขนาด n) หาอาร์เรย์ต้นฉบับ (ขนาด √n) ตัวอย่าง: A = [6, 1, 1, 13] → ต้นฉบับคือ [13, 6] เพราะ gcd(13,13)=13, gcd(13,6)=1, gcd(6,13)=1, gcd(6,6)=6 อัลกอริทึม เรียง A เรียงมากไปน้อย นับจำนวนครั้งที่แต่ละค่าปรากฏ (occurrence

  15. หาคู่ตัวเลขที่ผลคูณเท่ากับค่าที่กำหนดใน Doubly Linked List ที่เรียงแล้ว (Python)

    โจทย์: กำหนด Doubly Linked List ที่เรียงจากน้อยไปมาก ไม่มีค่าซ้ำ หาคู่ (a, b) ที่ a × b = x โดยไม่ใช้พื้นที่เพิ่มเติม (O(1) space) วิธีแก้: ใช้ Two Pointers — ตัวหนึ่งเริ่มหัว (curr) อีกตัวเริ่มท้าย (nxt) เลื่อนเข้าหากันตามเงื่อนไขผลคูณ อัลกอริทึม หาโหนดท้าย (nxt) โดยเดินไปจน .next เป็น None วนลู

  16. หา 4 ตัวประกอบของ N ที่ให้ผลคูณมากที่สุดและผลรวมเท่ากับ N (Python)

    โจทย์: หาตัวประกอบ 4 ตัวของ N ที่ผลรวมเท่ากับ N และผลคูณมากที่สุด สามารถเลือกตัวประกอบซ้ำกันได้ ตัวอย่าง: N = 60 → ตัวประกอบคือ 1,2,3,4,5,6,10,12,15,20,30,60 → เลือก 15 สี่ครั้ง → ผลคูณ = 50625 อัลกอริทึม หาตัวประกอบทั้งหมดของ N (วนลูป 1 ถึง √N) เรียงตัวประกอบจากน้อยไปมาก วนลูป 3 ชั้น (i, j, k) ห

  17. การเพิ่มสไตล์ให้ปุ่ม Tkinter ใน Python

    Tkinter รองรับการจัดสไตล์ปุ่มได้หลายแบบ ผ่าน ttk.Style() บทความนี้แสดง 2 แบบ: จัดสไตล์เฉพาะปุ่มบางตัว และจัดสไตล์ทุกปุ่มในหน้าต่าง 1. จัดสไตล์เฉพาะปุ่มที่ต้องการ สร้างสไตล์ชื่อ W.TButton แล้วระบุในพารามิเตอร์ style ของปุ่มที่ต้องการ ตัวอย่างโค้ด from tkinter import * from tkinter.ttk import * can

  18. การจัดการอาร์กิวเมนต์บรรทัดคำสั่งใน Python (Argument Parsing)

    เมื่อรันสคริปต์ Python จากเทอร์มินัล มักต้องส่งอาร์กิวเมนต์เข้าไป บทความนี้เปรียบเทียบ 3 วิธีหลัก: sys.argv, getopt, และ argparse 1. ใช้ sys.argv (พื้นฐานที่สุด) sys.argv[0] คือชื่อไฟล์ ส่วน sys.argv[1] ขึ้นไปคืออาร์กิวเมนต์ที่ส่งมา ตัวอย่าง import sys print(sys.argv[0]) print(Hello , sys.argv[1],

  19. Widget Progressbar ใน Tkinter Python

    Progressbar เป็นองค์ประกอบ GUI สำหรับแสดงความคืบหน้าของงาน บทความนี้สอนสร้าง Progressbar ด้วย tkinter.ttk ตัวอย่างโค้ด import tkinter as tk from tkinter.ttk import Progressbar from tkinter import ttk canv = tk.Tk() canv.title(Tkinter Progressbar) canv.geometry(250x100) # สร้าง Style สำหรับปรับสี

Total 9001 -คอมพิวเตอร์  FirstPage PreviousPage NextPage LastPage CurrentPage:161/451  20-คอมพิวเตอร์/Page Goto:1 155 156 157 158 159 160 161 162 163 164 165 166 167