Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python
Python
  1. หาค่า d เพื่อเพิ่มจำนวนศูนย์ในอาร์เรย์ c[i] = d*a[i] + b[i] ใน Python

    สมมติว่าเรามีอาร์เรย์สองตัว A และ B ขนาด n จำนวนเต็ม พิจารณาอาร์เรย์ C โดยที่สมาชิกตัวที่ i คือ d*A[i] + B[i] โดย d เป็นจำนวนจริง bất kỳ เราต้องการหา d ที่ทำให้อาร์เรย์ C มีจำนวนศูนย์มากที่สุด พร้อมทั้งคืนค่าจำนวนศูนย์นั้น เช่น หากอินพุตคือ A = [15, 40, 45] และ B = [4, 5, 6] ผลลัพธ์จะเป็น d = -0.266

  2. ค้นหาองค์ประกอบที่แตกต่างกันซึ่งซ้ำในทุกแถวของเมทริกซ์ใน Python

    สมมติว่าเรามีเมทริกซ์สี่เหลี่ยมจัตุรัสขนาด m x m เราต้องการค้นหาองค์ประกอบที่แตกต่างกันทั้งหมดที่ปรากฏในทุกแถวของเมทริกซ์ที่กำหนด เช่น หากอินพุตเป็นดังนี้: 13215417 1532436 15215412 1526432 21942215 ผลลัพธ์จะเป็น [2, 4, 15] ขั้นตอนการแก้ปัญหา สร้างฟังก์ชัน sortRows() ที่รับเมทริกซ์เข้ามา นับจำน

  3. หาค่าซ้ำในอาร์เรย์ด้วย Bit Array ใน Python

    โจทย์: อาร์เรย์ขนาดสูงสุด 32,000 มีค่าซ้ำ หาค่าซ้ำทั้งหมด โดยใช้หน่วยความจำเพียง 4 KB (bit array) ตัวอย่าง: [2,6,2,11,13,11] → [2,11] อัลกอริทึม Bit Array (Bit Vector) 4 KB = 32,768 bits → ครอบคลุมค่า 0 ถึง 32,767 พอดี แต่ละ bit แทนว่าค่านั้นเคยเจอหรือยัง 5) bit position = value % 32 (value & 31

  4. หาตำแหน่งในลำดับมโนโทนิก f(m) = am + bm[log2(m)] + cm³ (Python)

    โจทย์: กำหนด a,b,c และค่าเป้าหมาย l หา m ที่ f(m) = l โดย f(m) = a·m + b·m·⌊log₂(m)⌋ + c·m³ หาไม่เจอ → 0 ตัวอย่าง: a=2,b=1,c=1,l=12168587437017 → m=23001 อัลกอริทึม Binary Search 0, c ≥ 0 → ใช้ Binary Search หา m คำนวณ f(m) = a·m + b·m·⌊log₂(m)⌋ + c·m³ 0 → high=10⁶ (เพราะ m³ เติบโตเร็ว) Binary

  5. หาตำแหน่งพจน์แรกใน AP ที่เป็นตัวคูณของจำนวนเฉพาะ (Python)

    โจทย์: กำหนดพจน์แรก A, ความต่างร่วม D ของ AP และจำนวนเฉพาะ P หาตำแหน่ง (0-indexed) ของพจน์แรกที่หาร P ลงตัว ตัวอย่าง: A=3, D=4, P=5 → AP: 3,7,11,15,... → ตำแหน่ง 3 (พจน์ที่ 4) คณิตศาสตร์: Modular Inverse ต้องการหา n ที่น้อยที่สุด: A + nD ≡ 0 (mod P) → nD ≡ -A (mod P) → n ≡ -A × D⁻¹ (mod P) D⁻¹ mod

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

    โจทย์เดียวกับบทความก่อนหน้า แต่วิธีแก้ต่างออกไป: ใช้ Hash Map เก็บผลรวมคู่ตัวประกอบ ตัวอย่าง: N=60 → ตัวประกอบ: 1,2,3,4,5,6,10,12,15,20,30,60 → ผลคูณมากสุด = 50625 (15×15×15×15) อัลกอริทึม O(d²) ใช้ Hash Map หาตัวประกอบทั้งหมด v[] วนคู่ (i,j) ใน v: ถ้า v[i]+v[j] < N → เก็บ sum=v[i]+v[j] ใน v1[] แ

  7. หา 4 ตัวเลขที่หายไปในอาร์เรย์ 1 ถึง N (Python)

    โจทย์: อาร์เรย์ขนาด N-4 มีตัวเลข distinct จาก 1 ถึง N หา 4 ตัวที่หายไป (เรียงลำดับ) ตัวอย่าง: A=[2,8,4,13,6,11,9,5,10] (N=13) → หาย: 1,3,7,12 อัลกอริทึม In-place Marking O(1) Space n ใช้ array เล็ก temp_arr ขนาด 4 วน i: temp = |A[i]| ถ้า temp ≤ n: A[temp-1] *= -1 (mark) n: temp_arr[temp % n -

  8. หา 4 จุดที่สร้างสี่เหลี่ยมจัตุรัสขนานแกน x,y ใน Python

    โจทย์: กำหนด n จุด หา 4 จุดที่สร้างสี่เหลี่ยมจัตุรัสขนานแกน พื้นที่มากที่สุด ถ้าไม่มี → not possible ตัวอย่าง: points=[(2,2),(5,5),(4,5),(5,4),(2,5),(5,2)] → สี่เหลี่ยม (2,2),(5,2),(2,5),(5,5) side=3 อัลกอริทึม O(n²) ใช้ Hash Map เก็บจุดทั้งหมดใน hash map (ดิกชันนารี) เพื่อ O(1) lookup วนคู่จุด (

  9. ตรวจสอบว่ากราฟไม่มีทิศทางมี Independent Set ขนาดกำหนดหรือไม่ (Python)

    โจทย์: กราฟไม่มีทิศทาง (adjacency matrix) หาว่ามี independent set ขนาด k หรือไม่ (independent set = โหนดคู่ใดคู่หนึ่งไม่เชื่อมโดยตรง) ตัวอย่าง: กราฟ 5 โหนด, k=4 → Yes (มีชุด 4 โหนดที่ไม่มี edge เชื่อมกัน) อัลกอริทึม Backtracking ฟังก์ชัน is_valid(graph, arr): ตรวจสอบทุกคู่ใน arr ไม่มี edge เชื่อม

  10. ตรวจสอบระดับแนวตั้งของ Binary Tree ว่าเรียงลำดับหรือไม่ (Python)

    โจทย์: กำหนด Binary Tree และ vertical level l ตรวจสอบว่าโหนดในระดับนั้นเรียงจากบนลงล่าง (ตาม level order) หรือไม่ ตัวอย่าง: level -1 มีโหนด 3, 7 → เรียงแล้ว → True อัลกอริทึม BFS + Vertical Level Tracking BFS (queue) พร้อมเก็บ (node, level) root อยู่ level 0, left child = level-1, right child = l

  11. ตรวจสอบว่าสามารถได้อัตราส่วนจากช่วงต้นทุนและปริมาณที่กำหนด (Python)

    โจทย์: กำหนดช่วงต้นทุน [lowCost, upCost] และช่วงปริมาณ [lowQuant, upQuant] หาว่ามีคู่ (cost, quantity) ที่ cost/quantity = r อยู่ในช่วงหรือไม่ ตัวอย่าง: lowCost=2, upCost=10, lowQuant=3, upQuant=9, r=3 → quantity=3 → cost=9 ∈ [2,10] → True อัลกอริทึม วนลูป quantity จาก lowQuant ถึง upQuant คำนวณ c

  12. ตรวจสอบการจัดวางถ้วยและจานรองบนชั้นวาง (Python)

    โจทย์: มีถ้วย 3 ประเภท (อาร์เรย์ p) และจานรอง 3 ประเภท (อาร์เรย์ q) มีชั้นวาง m ชั้น ตรวจสอบว่าจัดได้หรือไม่ เงื่อนไข: 1) ชั้นใดชั้นหนึ่งใส่ได้แค่ถ้วย หรือ จานรอง (ไม่ผสม) 2) ชั้นละสูงสุด 5 ถ้วย 3) ชั้นละสูงสุด 10 จานรอง ตัวอย่าง: p=[4,3,7], q=[5,9,10], m=11 → ถ้วยรวม 14 ต้อง 3 ชั้น, จานรวม 24 ต้อ

  13. ตรวจสอบว่ามี Path ยาวกว่า k จาก Source ในกราฟ (Python)

    โจทย์: กราฟไม่มีทิศทาง กำหนด source vertex และ k หาว่ามี simple path (ไม่ซ้ำโหนด) จาก source ยาว ≥ k หรือไม่ ตัวอย่าง: กราฟ 9 โหนด, source=0, k=64 → มี path 0-7-1-2-8-6-5-3-4 ความยาว 68 ≥ 64 → True อัลกอริทึม DFS + Backtracking DFS จาก source พร้อมเก็บ visited path ถ้า edge weight ≥ k ที่เหลือ →

  14. หา index i ที่ prefix S1 และ suffix S2 ต่อกันได้ Palindrome (Python)

    โจทย์: สตริง S1, S2 ความยาวเท่ากัน หา i ที่ S1[0..i] + S2[i+1..n-1] เป็น palindrome ไม่ได้ → -1 ตัวอย่าง: S1=pqrsu, S2=wxyqp → i=1: pq + ypq = pqyqp (palindrome) อัลกอริทึม Brute Force O(n²) วน i จาก 0 ถึง n-1 สร้าง prefix = S1[0..i] สร้าง suffix = S2[i+1..n-1] ตรวจสอบ prefix+suffix เป็น palindro

  15. หาตำแหน่ง 0 ที่ควรเปลี่ยนเป็น 1 ให้ได้ลำดับ 1 ติดกันยาวที่สุด (Python)

    โจทย์: อาร์เรย์ไบนารี หา index ของ 0 ที่ถ้าเปลี่ยนเป็น 1 จะได้ consecutive 1s ยาวที่สุด ตัวอย่าง: [1,1,0,0,1,0,1,1,1,1,0,1,1] → index 10 → [1,1,0,0,1,0,1,1,1,1,1,1,1] (ยาว 7) อัลกอริทึม One Pass count_left = จำนวน 1 ติดกันก่อน 0 ล่าสุด count_right = จำนวน 1 ติดกันหลัง 0 ล่าสุด (กำลังนับอยู่) last

  16. หาตัวอักษรที่ k ของสตริงถอดรหัส - ชุดที่ 2 (Python)

    โจทย์: สตริงเข้ารหัสแบบ run-length เช่น pq2rs2 → decoded pqpqrsrs หาตัวอักษรตำแหน่ง k (1-indexed) รองรับตัวเลขหลายหลัก ตัวอย่าง: pq4r2ts3, k=11 → decoded pqpqpqpqrrtststs → ตัวที่ 11 คือ t อัลกอริทึม สแกนสตริง: อ่านตัวอักษรต่อเนื่อง → temp อ่านตัวเลขต่อเนื่อง → occurrence (รองรับหลายหลัก) เพิ่ม t

  17. หาย่อยต้นไม้ใหญ่ที่สุดที่มีซ้ายและขวาเหมือนกันใน Python

    โจทย์: กำหนด Binary Tree หา subtree ใหญ่ที่สุดที่ left subtree และ right subtree เหมือนกัน (identical) O(n) time อัลกอริทึม: Tree Encoding + Post-order Post-order traversal: เข้ารหัส (encode) โครงสร้าง subtree แต่ละโหนดเป็นสตริง encoding = | + left_encoding + | + node_value + | + right_encoding +

  18. หาลำดับ Bitonic ยาวที่สุด: ส่วนเพิ่มจากอาร์เรย์ 1 ส่วนลดจากอาร์เรย์ 2 (Python)

    โจทย์: กำหนดอาร์เรย์ A, B หา bitonic sequence ยาวที่สุด: ส่วนเพิ่ม (strictly increasing) เป็น subsequence ของ A, ส่วนลด (strictly decreasing) เป็น subsequence ของ B ตัวอย่าง: A=[2,6,3,5,4,6], B=[9,7,5,8,4,3] → [2,3,4,6,9,7,5,4,3] อัลกอริทึม: LIS (Longest Increasing Subsequence) แบบ Patience Sortin

  19. หา Palindrome ยาวที่สุดจากการลบ/สลับตัวอักษรในสตริง (Python)

    โจทย์: กำหนดสตริง หา palindrome ยาวที่สุดที่สร้างได้จากการลบหรือจัดเรียงใหม่ตัวอักษร (คืนค่าใดค่าหนึ่งถ้ามีหลายคำตอบ) ตัวอย่าง: pqqprrs → pqrsrqp (ใช้ p:2, q:2, r:2, s:1 → วางคู่ข้างนอก ตัวเดี่ยวกลาง) อัลกอริทึม นับความถี่ตัวอักษร (count array ขนาด 256) สร้างครึ่งซ้าย (begin): วน a-z นำตัวอักษรแต

  20. หาอิลิเมนต์ที่หายไปจากอาร์เรย์ที่ซ้ำกันใน Python

    โจทย์: มีอาร์เรย์ 2 ชุด เป็น duplicate ของกัน แต่ชุดหนึ่งขาด 1 อิลิเมนต์ หาตัวที่หาย (อาร์เรย์เรียงลำดับ) ตัวอย่าง: A=[2,5,6,8,10], B=[5,6,8,10] → หายคือ 2 อัลกอริทึม Binary Search ถ้าตัวแรกต่างกัน → ตัวแรกของอาร์เรย์ยาวกว่าคือคำตอบ Binary search: mid = (low+high)//2 ถ้า A[mid] == B[mid] → หายอยู

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