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

    สมมติว่าเรามีอาร์เรย์ bloomDay, m และ k เราต้องทำ m ช่อดอกไม้ แต่ละช่อต้องการ k ดอกที่ติดกัน ดอกไม้ที่ i จะบานในวันที่ bloomDay[i] แต่ละดอกใช้ได้เพียง 1 ช่อ หาจำนวนวันน้อยที่สุดที่ต้องรอเพื่อทำ m ช่อ ถ้าทำไม่ได้คืน -1 เช่น bloomDay = [5,5,5,5,10,5,5] m = 2 k = 3 ผลลัพธ์คือ 10 วันที่ 5: [x,x,x,x,_,

  2. โปรแกรมทำให้ชื่อไฟล์ไม่ซ้ำกันด้วย Python

    สมมติว่าเรามีอาร์เรย์สตริง names ขนาด n เราจะสร้างโฟลเดอร์ n อัน โดยนาทีที่ i จะสร้างโฟลเดอร์ชื่อ names[i] ไม่สามารถมีชื่อซ้ำกันได้ ถ้าชื่อซ้ำระบบจะเติม suffix (k) โดย k เป็นจำนวนเต็มบวกน้อยที่สุดที่ทำให้ชื่อไม่ซ้ำ เราต้องคืนอาร์เรย์ชื่อจริงที่จะถูกกำหนด เช่น ถ้าข้อมูลเข้าเป็น names = [my_dir,my_di

  3. โปรแกรมหาตัวประกอบตัวที่ k ของ n ด้วย Python

    สมมติว่าเรามีจำนวนเต็มบวก n และ k พิจารณารายการตัวประกอบของ n เรียงจากน้อยไปมาก เราต้องหาตัวประกอบตัวที่ k ถ้ามีน้อยกว่า k ตัวให้คืน -1 เช่น ถ้าข้อมูลเข้าเป็น n = 28 k = 4 ผลลัพธ์จะเป็น 7 เพราะตัวประกอบของ 28 คือ [1,2,4,7,14,28] ตัวที่ 4 คือ 7 ขั้นตอนการแก้ปัญหา ถ้า k == 1: คืน 1 สร้างลิสต์ cand =

  4. โปรแกรมหา subarray ของ 1 ยาวสุดหลังลบอิลิเมนต์หนึ่งด้วย Python

    สมมติว่าเรามีอาร์เรย์บाइनารี nums เราสามารถลบอิลิเมนต์หนึ่งได้ เราต้องหาขนาดของ subarray ที่ไม่ว่างและประกอบด้วย 1 เท่านั้นที่ยาวที่สุดในอาร์เรย์ที่เหลือ ถ้าไม่มีให้คืน 0 เช่น ถ้าข้อมูลเข้าเป็น nums = [1,0,1,1,1,0,1,1,0] ผลลัพธ์จะเป็น 5 เพราะลบ 0 ตำแหน่ง 5 (0-indexed) จะได้ subarray [1,1,1,1,1] ยาว

  5. โปรแกรมตรวจสอบว่า array สามารถจับคู่ได้ทุกคู่หาร k ลงตัวหรือไม่ด้วย Python

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

  6. โปรแกรมนับจำนวน subsequences ที่ตรงตามเงื่อนไขผลรวม min+max ด้วย Python

    สมมติว่าเรามีอาร์เรย์ nums และค่า k เราต้องหาจำนวน subsequences ที่ไม่ว่าง ที่ผลรวมของค่าต่ำสุดและค่าสูงสุดใน subsequence นั้น ≤ k คำตอบอาจใหญ่มาก จึงต้อง modulo 109 + 7 เช่น ถ้าข้อมูลเข้าเป็น nums = [4,6,7,8] k = 11 ผลลัพธ์จะเป็น 4 เพราะมี subsequences ที่ตรงเงื่อนไข ได้แก่ [4], [4,6], [4,6,7], [4

  7. โปรแกรมนับจำนวน square submatrices ที่เป็น 1 ทั้งหมดด้วย Python

    สมมติว่าเรามีเมทริกซ์ขนาด m x n ที่ประกอบด้วย 0 และ 1 เราต้องหาว่ามี square submatrices (สี่เหลี่ยมจัตุรัส) กี่อันที่ประกอบด้วย 1 ทั้งหมด เช่น ถ้าข้อมูลเข้าเป็น 0111 1111 0111 ผลลัพธ์จะเป็น 15 เพราะมีสี่เหลี่ยมจัตุรัสขนาด 1 จำนวน 10 อัน ขนาด 2 จำนวน 4 อัน และขนาด 3 จำนวน 1 อัน รวม 10 + 4 + 1 =

  8. โปรแกรมนับจำนวน submatrices ที่เป็น 1 ทั้งหมดด้วย Python

    สมมติว่าเรามีเมทริกซ์ขนาด m x n ที่ประกอบด้วย 0 และ 1 เราต้องหาว่ามี submatrices กี่อันที่ประกอบด้วย 1 ทั้งหมด เช่น ถ้าข้อมูลเข้าเป็น 101 011 011 ผลลัพธ์จะเป็น 13 เพราะมี 6 เมทริกซ์ 1x1, 3 เมทริกซ์ 2x1, 2 เมทริกซ์ 1x2, 1 เมทริกซ์ 3x1 และ 1 เมทริกซ์ 2x2 (หมายเหตุ: ตัวอย่างเดิมเขียน 4x4 ผิด ควรเป

  9. โปรแกรมหาผลรวมของ subarray sums ที่เรียงแล้วในช่วงที่กำหนดด้วย Python

    สมมติว่าเรามีอาร์เรย์ nums ขนาด n ที่มีค่าบวกทั้งหมด หากเราคำนวณผลรวมของทุก subarray ที่ติดกันและไม่ว่าง แล้วเรียงลำดับจากน้อยไปมาก จะได้อาร์เรย์ใหม่ขนาด n(n+1)/2 เราต้องหาผลรวมของค่าตั้งแต่ index left ถึง right (1-indexed) รวมทั้งสองข้าง ผลลัพธ์อาจใหญ่มาก จึงต้อง modulo 109 + 7 เช่น ถ้าข้อมูลเข้าเ

  10. โปรแกรมหาความต่างน้อยที่สุดระหว่างค่าสูงสุดและต่ำสุดหลังเปลี่ยนค่าได้ 3 ครั้งด้วย Python

    สมมติว่าเรามีอาร์เรย์ nums เราสามารถเปลี่ยนค่าอะไรก็ได้ของอิลิเมนต์หนึ่งในหนึ่งครั้ง (move) เราต้องหาความต่างน้อยที่สุดระหว่างค่าสูงสุดและต่ำสุดของ nums หลังจากทำได้สูงสุด 3 ครั้ง เช่น ถ้าข้อมูลเข้าเป็น nums = [3,7,2,12,16] ผลลัพธ์จะเป็น 1 เพราะเราสามารถทำให้อาร์เรย์กลายเป็น [1,1,0,1,1] ค่าสูงสุดคื

  11. โปรแกรมนับจำนวน substring ที่ประกอบด้วย 1 เท่านั้นด้วย Python

    สมมติว่าเรามีสตริงบाइनารี s เราต้องหาจำนวน substring ที่ตัวอักษรทุกตัวเป็น 1 คำตอบอาจใหญ่มาก จึงต้องคืนค่า modulo 109 + 7 เช่น ถ้าข้อมูลเข้าเป็น s = 1011010 ผลลัพธ์จะเป็น 5 เพราะมี substring 1 จำนวน 4 ครั้ง และ 11 จำนวน 1 ครั้ง ขั้นตอนการแก้ปัญหา กำหนด m = 109 + 7 กำหนด result = 0 แบ่งสตริง b โดยแ

  12. โปรแกรมหาเส้นทางที่มีความน่าจะเป็นสูงสุดด้วย Python

    สมมติว่าเรามีกราฟแบบไม่มีทิศทาง (undirected graph) ที่มีน้ำหนัก (weighted) จำนวน n โหนด (โหนดหมายเลขตั้งแต่ 0 ขึ้นไป) กราฟนี้รับเข้ามาในรูปแบบรายการขอบ (edge list) โดยแต่ละขอบ e มีความน่าจะเป็นสำเร็จในการเดินทางผ่านขอบนั้นคือ probability[e] เรายังมีโหนดเริ่มต้น (start) และโหนดสิ้นสุด (end) เราต้องห

  13. โปรแกรมนับโหนดใน Subtree ที่มี Label เหมือน Root ด้วย Python

    Tree n โหนด มี label ตัวอักษร หาแต่ละโหนด i: จำนวนโหนดใน subtree ของ i ที่มี label เหมือน i ใช้ DFS post-order สร้าง graph จาก edges DFS คืน Counter ของ labels ใน subtree รวม label ของตัวเอง แล้ว R[i] = count ของ label i ขั้นตอนการทำงาน สร้าง adjacency list E จาก edges label R = [0]*n ผลลัพ

  14. โปรแกรมนับ Subarray ผลรวมเป็นเลขคี่ (Odd Sum) ด้วย Python

    นับ subarray ที่ sum เป็นคี่ ใช้ prefix sum parity: เก็บ frequency ของ prefix sum parity (0=even, 1=odd) เริ่มต้น freq[0]=1 (empty prefix) สำหรับแต่ละ x: prefix += x, ans += freq[1 ^ (prefix&1)] (ต้องการ parity ตรงข้าม), freq[prefix&1]++ ผลลัพธ์ mod 1e9+7 ขั้นตอนการทำงาน freq = [1, 0] # freq[eve

  15. โปรแกรมนับจำนวนวิธีแบ่ง String ที่ดี (Good Splits) ด้วย Python

    Good split: แบ่ง string s เป็น p + q (p,q ไม่ว่าง) จำนวน distinct characters ใน p และ q เท่ากัน ใช้ 2 Counter: left (สะสมจากซ้าย), right (เริ่มจาก count ทั้ง s) วนลูปย้าย char จาก right ไป left ถ้า len(left) == len(right) นับ good split ขั้นตอนการทำงาน left = Counter(), right = Counter(s) resu

  16. โปรแกรมทำ Bulb Switcher ด้วย Binary String ใน Python

    0 เริ่มจาก 0 นั่นคือจำนวน flips ขั้นตอนการทำงาน count = 0, current_state = 0 วนลูปแต่ละ char i ใน target string t ถ้า i != current_state: count++, current_state = i คืน count ตัวอย่างโค้ด def solve(t): count = 0 x = 0 for i in t: if i != x: count += 1

  17. โปรแกรมนับคู่ Leaf Nodes ที่ดี (Good Pairs) ใน Binary Tree ด้วย Python

    Good leaf pair: 2 leaf nodes ระยะทาง shortest path <= d ใช้ DFS post-order คืน list ของ [node_ref, distance_from_this_node] สำหรับ leaf เป็น [[node, 0]] สำหรับ internal node: รวม left และ right lists เพิ่ม distance +1 ตรวจสอบทุกคู่ cross left-right ว่า distance_sum <= d ขั้นตอนการทำงาน DFS funct

  18. โปรแกรมหาผู้ชนะเกม Array Game ด้วย Python

    = n-1 มิฉะนั้น simulate จนกว่าจะได้ k consecutive wins ขั้นตอนการทำงาน prev = arr[0], count = 0 arr[i]: count++ มิฉะนั้น prev = arr[i], count = 1 ถ้า count == k: return prev จบลูป: return prev (ค่ามากที่สุด) ตัวอย่างโค้ด arr[i]: count += 1 else: prev = a

  19. โปรแกรมหาจำนวน Swap น้อยที่สุดจัด Binary Grid ให้บน Diagonal เป็น 0 ด้วย Python

    j) เป็น 0 กลยุทธ์: หา rightmost 1 ของแต่ละแถว (m[i]) แล้ว greedy ย้ายแถวที่ m[i] <= allowed position ไปด้านบน นับ swaps อัลกอริทึม m[i] = จำนวนคอลัมน์จากขวาสุดถึง rightmost 1 ของแถว i (ถ้าไม่มี 1 ให้ m[i]=n) สำหรับแต่ละแถวเป้าหมาย i (0-indexed): allowed = n - i - 1 = i ที่ m[j] <= allowed ใก

  20. โปรแกรมตรวจสอบว่าแปลง String ได้ใน K Moves หรือไม่ด้วย Python

    t ได้ใน ≤ k moves ใช้ frequency count ของ shift distances ที่จำเป็น ตรวจสอบว่าแต่ละ shift distance มี moves พอหรือไม่ อัลกอริทึม ถ้า len(s) != len(t): return False count[d] = จำนวน move ที่สามารถทำ shift distance d ได้ = min(1, k-d+1) + (k-d)//26 สำหรับ d=0..25 วนลูป c1, c2 ใน zip(s,t): ถ้า

Total 9001 -คอมพิวเตอร์  FirstPage PreviousPage NextPage LastPage CurrentPage:286/451  20-คอมพิวเตอร์/Page Goto:1 280 281 282 283 284 285 286 287 288 289 290 291 292