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

    ได้รับลิสต์ nums และ queries [[x, limit], ...] สำหรับแต่ละ query หา e ∈ nums ที่ e ≤ limit และ e XOR x สูงสุด ไม่มี → -1 ตัวอย่าง nums = [3, 5, 9], queries = [[4, 6], [2, 0]] Output: [3, -1] Query 1: 3^4=7, 5^4=1 → เลือก 3 | Query 2: ไม่มีเลข ≤ 0 แนวทางแก้ปัญหา Offline Queries + Binary Trie: เรีย

  2. โปรแกรมรวมช่วงเวลา (Intervals) โดยเพิ่ม Target Interval ใน Python

    ได้รับลิสต์ intervals ที่ ไม่ทับซ้อนและเรียงตาม end time และ target interval ใหม่ ต้อง insert และ merge ให้ intervals ยังคงไม่ทับซ้อนและเรียงลำดับ ตัวอย่าง intervals = [[1,15], [25,35], [75,90]], target = [10,30] Output: [[1,35], [75,90]] (merge [1,15] กับ [25,35] ผ่าน target) แนวทางแก้ปัญหา เพิ่

  3. โปรแกรมนับจำนวนคำที่สร้างได้จากเมทริกซ์ตัวอักษรใน Python

    ได้รับบอร์ด 4×4 ตัวอักษร และลิสต์คำ ต้องหา จำนวนคำสูงสุด ที่สร้างได้จากเส้นทางติดกัน (8 ทิศทาง) แต่ละเซลล์ใช้ได้สูงสุด 1 ครั้งต่อคำ (แต่ใช้ซ้ำได้สำหรับคำคนละคำ) ตัวอย่าง m b f d x a y a t z t r s q q q words = [bat, far, mat] → Output: 3 (สร้างได้ทั้ง 3 คำ) แนวทางแก้ปัญหา ใช้ Trie + DFS + Backtr

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

    ได้รับลิสต์ nums สองตัวเลข nums[i] ≤ nums[j] เรียกว่า ติดกัน (adjacent) ถ้า ไม่มีตัวเลขอื่นอยู่ระหว่างค่าของพวกเขาในอาเรย์ หา |j-i| น้อยที่สุดของคู่ที่ติดกันนี้ ตัวอย่าง Input: [1, -9, 6, -6, 2] Output: 2 คู่ติดกันในค่า: (1,2), (-9,-6), (-6,1), (2,6) → ดัชนีห่างน้อยสุดคือ 2 และ 6 (index 2 และ 4) แ

  5. โปรแกรมนับจำนวนการสปขั้นต่ำเพื่อทำให้เป็นพาลินโดรมใน Python

    ได้รับสตริง s หา จำนวน adjacent swaps น้อยที่สุด เพื่อทำให้เป็นพาลินโดรม ไม่ได้ → -1 ตัวอย่าง Input: xxyy Output: 2 Swap กลาง: xxyy → xyxy → xyxy → yxxy (พาลินโดรม) แนวทางแก้ปัญหา ตรวจสอบก่อนว่าเป็นพาลินโดรมได้ไหม: นับความถี่ ตัวอักษรที่มีคี่ได้สูงสุด 1 ตัว Two pointers left, right หน้าหลัง: ถ้า

  6. โปรแกรมหาขนาด substring น้อยที่สุดที่มีตัวอักษรครบใน Python

    ได้รับสตริง s และ t หา ความยาว substring สั้นที่สุดของ s ที่มีตัวอักษรครบทุกตัวใน t (ตามจำนวน) ไม่มี → -1 ตัวอย่าง Input: s = thegrumpywizardmakes, t = wake Output: 10 (substring wizardmake) หมายเหตุ: ตัวอย่าง Output ในโจทย์ต้นฉบับเขียน 2 ซึ่งผิด ควรเป็น 10 แนวทางแก้ปัญหา ใช้ Sliding Window + Char

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

    ได้รับสตริงตัวเลข s และ t ต้องลบตัวเลขออกจากทั้งสองสตริง จน ทั้งสองสตริงเหมือนกัน และ ผลรวมตัวเลขที่ลบออกน้อยที่สุด คืนค่าผลรวมนั้น ตัวอย่าง Input: s = 41272, t = 172 Output: 6 ลบ 4 และ 2 จาก s → 172 ผลรวม = 4+2=6 แนวทางแก้ปัญหา เทียบเท่ากับการหา Maximum Sum Common Subsequence: LCS แบบปกติหา ความ

  8. โปรแกรมหารัศมีขั้นต่ำเพื่อส่องสว่างบ้านทั้งหมดใน Python

    ได้รับตำแหน่งบ้านบนเส้นตรง 1D (nums) มีโคมไฟ 3 ดวง วางได้ทุกที่ โคมที่ x ส่องสว่างช่วง [x-r, x+r] หา r น้อยที่สุด ให้ส่องสว่างบ้านทั้งหมด ตัวอย่าง Input: [4, 5, 6, 7] Output: 0.5 วางโคมที่ 4.5, 5.5, 6.5 → ครอบคลุมทั้ง 4 บ้าน แนวทางแก้ปัญหา Binary Search คำตอบ + Greedy Check: เรียงลำดับตำแหน่งบ้าน

  9. โปรแกรมนับจำนวนการพลิกสับลิสต์ความยาว K ให้กลายเป็นทั้ง 0 ใน Python

    ได้รับลิสต์ nums (0 และ 1) และ k Operation: เลือก sublist ความยาว k พลิกทุกตัว (0↔1) หา จำนวน operation น้อยที่สุด ให้ทั้งลิสต์กลายเป็น 0 ถ้าไม่ได้ → -1 ตัวอย่าง Input: nums = [1,1,1,0,0,1,1,1], k = 3 Output: 2 (พลิก 3 ตัวแรก และ 3 ตัวท้าย) แนวทางแก้ปัญหา ใช้ Greedy + Difference Array (Lazy Propag

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

    ได้รับสตริงไบนารี s อนุญาตให้ ย้าย prefix ไปท้ายสตริง (rotation) แล้วจึง พลิกบิต (0↔1) หาจำนวนการพลิกน้อยที่สุดเพื่อให้ไม่มีบิตติดกัน 2 ตัวเหมือนกัน (คือ 010101... หรือ 101010...) ตัวอย่าง Input: 10010101111 Output: 2 ย้าย prefix 10 → 01010111110 พลิกบิตที่ 3 และ 5 จากขวา → 01010101010 แนวทางแก้ปั

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

    ได้รับสตริง s แทนสถานะเริ่มต้นของสัตว์: L (ซ้าย), R (ขวา), @ (นิ่ง) สัตว์ที่เคลื่อนที่จะ ดัน สัตว์หน้ามันไปด้วย เว้นแต่จะได้แรงจากทิศตรงข้าม → หยุดนิ่ง (@) หาสถานะสุดท้ายเมื่อทุกตัวหยุด ตัวอย่าง Input: @@L@R@@@@L Output: LLL@RRRLLL แนวทางแก้ปัญหา ใช้ Multi-source BFS (Level-based): คิวเริ่มต้น: ท

  12. โปรแกรมหาค่าสูงสุดที่ได้จากการใส่ของในกระเป๋า (Knapsack) ใน Python

    ได้รับ weights, values ความยาวเท่ากัน และ capacity, count สามารถเลือกของได้สูงสุด count ชิ้น น้ำหนักรวม ≤ capacity แต่ละชิ้นเลือกได้สูงสุด 1 ครั้ง หา value สูงสุด ตัวอย่าง weights = [2, 2, 4, 6], values = [15, 15, 20, 35] capacity = 8, count = 3 → Output: 50 (เลือก 3 ชิ้นแรก น้ำหนัก 2+2+4=8, value

  13. โปรแกรมหาความยาววงเล็บถูกต้องที่ยาวที่สุดใน Python

    ได้รับสตริง s ประกอบด้วย ( และ ) เท่านั้น หา ความยาวของ substring ที่เป็นวงเล็บถูกต้อง (valid parentheses) ยาวที่สุด ตัวอย่าง Input: ))(())()) Output: 6 (substring (())()) แนวทางแก้ปัญหา ใช้ Stack เก็บ index: เริ่ม stack = [-1] (base index) วนอ่านตัวอักษร index i: ถ้า ( → push i ถ้า ): pop stac

  14. โปรแกรมตรวจสอบ N-Queens Solution ได้หรือไม่ใน Python

    ได้รับเมทริกซ์ไบนารี n×n ที่ 1 = ควีนวางไว้แล้ว 0 = ว่าง ต้องตรวจสอบว่า สามารถวางควีนเพิ่มเติมได้ครบ n ตัวโดยไม่โจมตีกัน หรือไม่ ตัวอย่าง 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 Output: True (มี solution อยู่) แนวทางแก้ปัญหา ใช้ Backtracking แบบ Iterative + Stack: ฟังก์ชัน isSafe(boar

  15. โปรแกรมหาความยาว LIS ที่มีค่าเลขคี่อย่างน้อย K ตัวใน Python

    ได้รับลิสต์ตัวเลข nums และค่า k หา ความยาวของ Longest Increasing Subsequence (LIS) ที่มี จำนวนเลขคี่ ≥ k ตัวอย่าง Input: nums = [12, 14, 16, 5, 7, 8], k = 2 Output: 3 (LIS คือ [5, 7, 8] มีเลขคี่ 2 ตัว คือ 5, 7) แนวทางแก้ปัญหา ใช้ DFS + Backtracking (เหมาะสำหรับ N ≤ ~20): State: dp(i, j, odd, take

  16. โปรแกรมหาค่า Power สูงสุดของลิสต์โดยย้ายสมาชิกใน Python

    ได้รับลิสต์ nums จำนวนบวก N ตัว อนุญาตให้ ย้าย (ไม่ใช่ส왑) สมาชิกตัวใดตัวหนึ่งไปตำแหน่งอื่นได้ 1 ครั้ง (หรือไม่ย้ายก็ได้) หา Power สูงสุด ที่เป็นไปได้ Power = Σ (i+1) × nums[i] สำหรับ i = 0 ถึง N-1 ตัวอย่าง Input: [6, 2, 3] Output: 26 ย้าย 6 ไปท้าย → [2, 3, 6] → Power = 2×1 + 3×2 + 6×3 = 26 แนวทางแ

  17. โปรแกรมหาต้นทุนขั้นต่ำในการทาสีรั้ว K สีใน Python

    มีรั้ว N ต้น ต้องทาสีด้วย K สี โดย รั้วติดกันต้องไม่มีสีเหมือนกัน ให้เมทริกซ์ N×K ที่ cost[i][j] = ต้นทุนทารั้ว i ด้วยสี j หาต้นทุนรวมน้อยที่สุด ตัวอย่าง 6 4 5 3 2 7 3 4 5 5 4 4 Output: 14 (เลือกสี index: 1→1→2→1 หรือ 5→2→3→4 ตามโจทย์) แนวทางแก้ปัญหา ใช้ DP แบบ Optimized O(N×K) โดยเก็บแค่ สีที่ถ

  18. โปรแกรมนับจำนวนเส้นทางที่มีค่าใช้จ่ายเท่ากับ K ในเมทริกซ์ Python

    ได้รับเมทริกซ์ไบนารี 2D และค่า k เริ่มจากมุมซ้ายบน (0,0) ไปมุมขวาล่าง (m-1,n-1) เดินได้เฉพาะ ขวา หรือ ลง คะแนนเส้นทาง = ผลรวมค่าเซลล์ที่ผ่าน หาจำนวนเส้นทางที่มีคะแนนเท่ากับ k (mod 10^9+7) ตัวอย่าง 0 0 1 1 0 1 0 1 0 k = 2 → Output: 4 เส้นทาง: RRDD, RDRD, DRRD, DDRR (R=ขวา, D=ลง) แนวทางแก้ปัญหา DP

  19. โปรแกรมหาขนาดของแต่ละพาร์ติชันที่ตัวอักษรปรากฏได้สูงสุดหนึ่งชิ้นใน Python

    ได้รับสตริงตัวพิมพ์เล็ก s ต้องแบ่งเป็นชิ้นมากที่สุดเท่าที่จะทำได้ โดยเงื่อนไข: ตัวอักษรแต่ละตัวต้องปรากฏในชิ้นเดียวเท่านั้น คืนค่าขนาดของแต่ละชิ้นเป็นลิสต์ ตัวอย่าง Input: momoplaykae Output: [4, 1, 1, 4, 1] การแบ่ง: [momo, p, l, ayka, e] ตัวอักษร m,o อยู่ชิ้นแรก p ชิ้นที่สอง l ชิ้นที่สาม a,y,k ชิ้

  20. โปรแกรมหาต้นทุนขั้นต่ำในการเก็บทองคำที่สองสถานที่ใน Python

    ได้รับเมทริกซ์ 2D แทนต้นทุนแต่ละเซลล์ เริ่มจาก (row, col) ต้องไปเก็บทองที่ (erow0, ecol0) และ (erow1, ecol1) เดินได้ 4 ทิศทาง ต้องจ่ายค่าต้นทุนของเซลล์ที่ผ่าน (จ่ายครั้งเดียวต่อเซลล์) หาต้นทุนรวมขั้นต่ำ ตัวอย่าง 1 1 1 1 1 1 10 10 10 10 1 1 1 10 10 Start: (0,0), Gold: (0,3) และ (2,2) → Outpu

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