Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python
Python
  1. แบ่งอาร์เรย์เพื่อผลรวมสูงสุด (Partition Array for Maximum Sum) ใน Python

    โจทย์: กำหนดอาร์เรย์ A แบ่งเป็น subarrays ต่อเนื่องยาวสูงสุด K แต่ละ subarray จะเปลี่ยนค่าทุกตัวเป็นค่าสูงสุดใน subarray นั้น หาผลรวมสูงสุดหลังแบ่ง ตัวอย่าง Input: A = [1, 15, 7, 9, 2, 5, 10], K = 3 Output: 84 (แบ่งเป็น [1,15,7] [9] [2,5,10] → [15,15,15] [9] [10,10,10] = 84) อัลกอริทึม: Dynamic Pr

  2. Permutation ก่อนหน้าด้วยการสลับครั้งเดียว (Previous Permutation With One Swap) ใน Python

    โจทย์: กำหนดอาร์เรย์ A หา permutation ที่เล็กกว่า A น้อยที่สุด (lexicographically largest but smaller) ที่ทำได้ด้วยการสลับ 2 ตัวเลขครั้งเดียว หาไม่ได้คืนค่าเดิม ตัวอย่าง Input: [3,2,1] Output: [3,1,2] (สลับ 2 และ 1) อัลกอริทึม หา left A[left+1] (scan จากขวา) หา right ตัวที่ A[right] < A[left] และ

  3. จัดเรียงบาร์โค้ดไม่ให้ติดกัน (Distant Barcodes) ใน Python

    โจทย์: กำหนดลิสต์บาร์โค้ด จัดเรียงใหม่ให้บาร์โค้ดที่ติดกันไม่เหมือนกัน ตัวอย่าง Input: [1,1,1,2,2,2] Output: [2,1,2,1,2,1] อัลกอริทึม: Greedy + Even-Odd Placement นับความถี่แต่ละบาร์โค้ด เรียงตามความถี่มากไปน้อย วางบาร์โค้ดที่มากที่สุดในตำแหน่งคู่ (0, 2, 4...) วางต่อในตำแหน่งคี่ (1, 3, 5...) วิธ

  4. พลิกคอลัมน์เพื่อแถวเท่ากันสูงสุด (Flip Columns For Maximum Equal Rows) ใน Python

    โจทย์: กำหนดเมทริกซ์ 0 และ 1 สามารถเลือกคอลัมน์ใดก็ได้และพลิกค่า (0↔1) ในคอลัมน์นั้นทั้งหมด หาจำนวนแถวสูงสุดที่มีค่าเท่ากันทุกคอลัมน์หลังจากพลิก ตัวอย่าง Matrix: 0 0 0 0 0 1 1 1 0 Output: 2 (พลิกคอลัมน์ 1-2 → แถว 2-3 กลายเป็น [1,1,1] และ [0,0,0]) ข้อสังเกตสำคัญ สองแถวจะกลายเป็นเหมือนกันหลังพลิกไ

  5. จำนวนลำดับตัวอักษรจากกระเบื้อง (Letter Tile Possibilities) ใน Python

    โจทย์: กำหนดชุดกระเบื้องตัวอักษร tiles หาจำนวนลำดับ (sequences) ที่เป็นไปได้ทั้งหมด (ไม่ว่าง) โดยแต่ละกระเบื้องใช้ได้สูงสุด 1 ครั้งต่อลำดับ ตัวอย่าง Input: AAB Output: 8 (ลำดับ: A, B, AA, AB, BA, AAB, ABA, BAA) อัลกอริทึม: DFS + Backtracking นับความถี่ตัวอักษรแต่ละตัว (26 ตัวอักษร) DFS: ลองวางตัว

  6. ค่าสูงสุดจากป้ายกำกับ (Largest Values From Labels) ใน Python

    โจทย์: มีชุดไอเท็ม แต่ละชิ้นมีค่า values[i] และป้ายกำกับ labels[i] เลือก subset S ที่: ขนาด |S| ≤ num_wanted แต่ละป้ายกำกับ L ใช้ได้สูงสุด use_limit ครั้ง หาผลรวมค่าสูงสุดที่เป็นไปได้ ตัวอย่าง values = [5,4,3,2,1], labels = [1,1,2,2,3], num_wanted = 3, use_limit = 1 Output: 9 (เลือกไอเท็มที่ 1, 3

  7. ปัญหาการรับส่งผู้โดยสารรถยนต์ (Car Pooling) ใน Python

    โจทย์: รถตู้มีที่นั่งว่าง capacity ขับไปทางตะวันออกเท่านั้น กำหนดรายการเที่ยวเดินทาง trips[i] = [num_passengers, start, end] ตรวจสอบว่าสามารถรับ-ส่งผู้โดยสารทุกคนได้หรือไม่โดยไม่เกินความจุ ตัวอย่าง Input: trips = [[2,1,5],[3,3,7]], capacity = 5 Output: True อัลกอริทึม: Sweep Line / Difference Arra

  8. จองเที่ยวบินองค์กร (Corporate Flight Bookings) ใน Python

    โจทย์: มีเที่ยวบิน n เที่ยว (1 ถึง n) และรายการจอง bookings[i] = [i, j, k] หมายถึงจอง k ที่นั่งจากเที่ยวบิน i ถึง j รวมทั้งสองปลาย หาจำนวนที่นั่งที่จองในแต่ละเที่ยวบิน ตัวอย่าง Input: [[1,2,10],[2,3,20],[2,5,25]], n = 5 Output: [10, 55, 45, 25, 25] อัลกอริทึม: Difference Array (Prefix Sum Optimiza

  9. หาช่วงเวลาทำงานที่ดีที่สุด (Longest Well-Performing Interval) ใน Python

    โจทย์: กำหนดลิสต์ hours แทนชั่วโมงทำงานต่อวัน วันที่ถือว่า เหนื่อย (tiring) คือวันที่ทำงาน > 8 ชั่วโมง ช่วงเวลาทำงานที่ดี (well-performing interval) คือช่วงที่จำนวนวันเหนื่อย > จำนวนวันไม่เหนื่อย หาความยาวช่วงที่ยาวที่สุด ตัวอย่าง Input: [9, 9, 6, 0, 6, 6, 9] Output: 3 (ช่วง [9, 9, 6] มีวันเห

  10. เปรียบเทียบหมายเลขเวอร์ชัน (Version Numbers) ใน Python

    การเปรียบเทียบหมายเลขเวอร์ชัน เช่น 1.0.1 กับ 1.0 ต้องการตรรกะพิเศษ เนื่องจากจุด (.) ไม่ใช่จุดทศนิยม แต่เป็นตัวคั่นระดับการแก้ไข (revision levels) บทความนี้เสนออัลกอริทึมและโค้ด Python สำหรับเปรียบเทียบเวอร์ชัน กฎการเปรียบเทียบ แยกเวอร์ชันด้วยจุด (.) เป็นอาร์เรย์ตัวเลข เปรียบเทียบระดับต่อระดับ (lef

  11. สร้างลิสต์ตัวเลขในช่วงที่กำหนด (Range) ใน Python

    Python มีฟังก์ชันและไลบรารีหลากหลายสำหรับสร้างลำดับตัวเลขในช่วงที่กำหนด บทความนี้อธิบาย 3 วิธีหลัก 1. ใช้ range() range() สร้างลำดับตัวเลข เริ่มจาก 0 (default) เพิ่มทีละ 1 จนถึงค่าที่กำหนด สามารถปรับ start, stop, step ได้ ตัวอย่าง def getnums(s, e, i): return list(range(s, e, i)) # Driver Cod

  12. แบ่งลิสต์แบบกำหนดเอง (Custom List Split) ใน Python

    ในงานวิเคราะห์ข้อมูล มักต้องแบ่งลิสต์ขนาดใหญ่เป็นสับลิสต์ (sublists) ตามจุดตัดที่กำหนด บทความนี้เสนอ 2 วิธีในการทำ custom list split 1. ใช้ zip และ for loop ใช้ list slicing ร่วมกับ zip เพื่อสร้างคู่ของดัชนีเริ่มต้นและสิ้นสุด จากนั้นสร้างสับลิสต์ด้วย list comprehension ตัวอย่าง Alist = [Mon, Tue,

  13. แปลงเลขฐานสิบเป็นลิสต์เลขฐานสอง (Binary) ใน Python

    Python เป็นภาษาที่ยืดหยุ่น สามารถจัดการแปลงเลขฐานสิบเป็นเลขฐานสองได้หลายวิธี บทความนี้เสนอ 2 วิธีหลักในการแปลงและสร้างเป็นลิสต์ของตัวเลข 0 และ 1 1. ใช้ format() ใช้ format specifier {0:0b} เพื่อแปลงจำนวนเต็มเป็นสตริงเลขฐานสอง แล้วแปลงแต่ละตัวอักษรเป็นจำนวนเต็มเก็บในลิสต์ ตัวอย่าง Dnum = 11 print(G

  14. วิธีลบองค์ประกอบในช่วงดัชนี (Range) ใน Python

    การลบองค์ประกอบเดี่ยวจากลิสต์ใน Python ทำได้ง่ายด้วยดัชนีและคำสั่ง del แต่บางครั้งเราต้องการลบหลายองค์ประกอบพร้อมกันตามช่วงดัชนีที่กำหนด บทความนี้สำรวจวิธีการลบองค์ประกอบตามลิสต์ดัชนีที่ระบุ 1. ใช้ sort() และ del วิธีนี้สร้างลิสต์ดัชนีที่ต้องการลบ เรียงลำดับจากมากไปน้อย (reverse) เพื่อรักษาลำดับเดิ

  15. วิธีลบรายการจาก Dictionary ขณะวนลูปใน Python

    Dictionary ใน Python เป็นโครงสร้างข้อมูลที่ไม่มีลำดับ แก้ไขได้ และเข้าถึงผ่านคีย์ (key) บทความนี้จะสำรวจวิธีการลบรายการออกจาก dictionary ขณะทำการวนลูป 1. ใช้คำสั่ง del พร้อมคีย์ วิธีนี้จะเก็บคีย์ที่ต้องการลบไว้ก่อน จากนั้นจึงใช้คำสั่ง del เพื่อลบคู่คีย์-ค่า (key-value pair) ของคีย์เหล่านั้นออกไป ต

  16. สร้างพจนานุกรมจากเนื้อหาลิสต์ใน Python

    การเปลี่ยนประเภทคอลเลกชันจากประเภทหนึ่งไปอีกประเภทเป็นความต้องการที่พบบ่อยใน Python ในบทความนี้เราจะดูวิธีสร้างพจนานุกรมเมื่อมีหลายลิสต์ให้ การท้าทายคือสามารถรวมลิสต์ทั้งหมดนี้เพื่อสร้างพจนานุกรมเดียวที่รองรับค่าทั้งหมดเหล่านี้ในรูปแบบคีย์-ค่าของพจนานุกรม ด้วย zip ฟังก์ชัน zip สามารถใช้รวมค่าของลิส

  17. แปลงพจนานุกรมเป็นลิสต์ของทัพเปิลใน Python

    การเปลี่ยนประเภทคอลเลกชันจากประเภทหนึ่งไปอีกประเภทเป็นความต้องการที่พบบ่อยใน Python ในบทความนี้เราจะดูวิธีสร้างทัพเปิลจากคู่คีย์-ค่าที่อยู่ในพจนานุกรม แต่ละคู่คีย์-ค่าจะกลายเป็นทัพเปิล ดังนั้นลิสต์สุดท้ายคือลิสต์ที่องค์ประกอบเป็นทัพเปิล ด้วย items() เราใช้เมธอด items ของพจนานุกรมซึ่งอนุญาตให้เราวนล

  18. พจนานุกรมกับดัชนีเป็นค่าใน Python

    ในบทความนี้เราจะเรียนรู้วิธีสร้างพจนานุกรมจากคอลเลกชัน Python ที่ใช้บ่อยอีกอย่างคือลิสต์ ดัชนีหรือคีย์ไม่ใช่ส่วนหนึ่งของเนื้อหาลิสต์ แต่ในพจนานุกรมเราต้องมีคีย์หรือดัชนีแนบมากับทุกองค์ประกอบซึ่งเรียกว่า value ใช้ enumerate ฟังก์ชัน enumerate เพิ่มตัวนับเป็นคีย์ของ enumerate object ดังนั้นเราใช้กับล

  19. ความต่างของสองลิสต์รวมซ้ำใน Python

    บางครั้งเราต้องหาความต่างระหว่างสองลิสต์ มันหมายถึงการลบทางคณิตศาสตร์ที่องค์ประกอบจากลิสต์แรกถูกลบออกหากมีอยู่ในลิสต์ที่สอง ค่าซ้ำถูกเก็บรักษา ด้านล่างคือวิธีการที่เราสามารถบรรลุได้ เราสามารถใช้เมธอด Counter จากโมดูล collections ซึ่งจะติดตามจำนวนขององค์ประกอบ การลบทางคณิตศาสตร์ตรงๆ ให้ผลลัพธ์ที่ต้อ

  20. การหารสองลิสต์ใน Python

    องค์ประกอบในสองลิสต์สามารถเกี่ยวข้องกับการหารสำหรับกิจกรรมจัดการข้อมูลบางอย่างโดยใช้ Python ในบทความนี้เราจะดูวิธีบรรลุเป้าหมายนี้ ด้วย zip ฟังก์ชัน zip สามารถจับคู่สองลิสต์ที่กำหนดแบบองค์ประกอบต่อองค์ประกอบ จากนั้นเราใช้ตัวดำเนินการหารทางคณิตศาสตร์กับแต่ละคู่ขององค์ประกอบเหล่านี้ เก็บผลลัพธ์ในลิสต

Total 9001 -คอมพิวเตอร์  FirstPage PreviousPage NextPage LastPage CurrentPage:140/451  20-คอมพิวเตอร์/Page Goto:1 134 135 136 137 138 139 140 141 142 143 144 145 146