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

    ความกว้างของระดับ: จำนวนตำแหน่งที่สามารถมีโหนดได้ระหว่างโหนดซ้ายสุดและขวาสุด (รวมช่องว่าง) ใช้การจัดตำแหน่งแบบ heap: ราก=0, ลูกซ้าย=2*pos, ลูกขวา=2*pos+1 หาความกว้าง = max_pos - min_pos + 1 ทุกระดับ อัลกอริธึม DFS DFS บันทึก min/max position ของแต่ละ depth คำนวณความกว้างแต่ละระดับ หาค่าสูงสุด การน

  2. โปรแกรมหาลำดับที่ n ตามกฎสตริงที่กำหนดใน Python

    ลำดับ A: A[0]=s, A[1]=t, A[n] = A[n-1]+A[n-2] (n คู่) หรือ A[n-2]+A[n-1] (n คี่) ตัวอย่าง: s=pk, t=r, n=4 → rrpkrpk อัลกอริธึม Iterative เก็บ a=A[n-2], b=A[n-1] ลูป i=2..n: ถ้า i คู่ → c=b+a, คี่ → c=a+b; แล้ว a=b, b=c การนำไปใช้ class Solution: def solve(self, s, t, n): if n == 0: ret

  3. โปรแกรมหาจำนวนการดำเนินการน้อยสุดทำให้สตริงหนึ่งเป็น substring ของอีกสตริงใน Python

    ให้สตริง s และ t หาจำนวนการเปลี่ยนตัวอักษรน้อยสุดใน s ใดๆ ทำให้ t เป็น substring ของ s ตัวอย่าง: s=abbpqr, t=bbxy → 2 (เปลี่ยน bbpq → bbxy: p→x, q→y) อัลกอริธึม Sliding Window สไลด์หน้าต่างขนาด len(t) บน s นับตัวอักษรที่ต่างกันในแต่ละหน้าต่าง หาค่าน้อยสุด การนำไปใช้ class Solution: def solve(s

  4. โปรแกรมหาผลรวมหลักของตัวเลขใน Python

    หาผลรวมหลักของตัวเลขโดยไม่แปลงเป็นสตริง ตัวอย่าง: 512 → 5+1+2 = 8 อัลกอริธึม ลูป while num != 0 บวก num % 10 (หลักหน่วย) แล้ว num //= 10 การนำไปใช้ class Solution: def solve(self, num): total = 0 while num != 0: total += num % 10 num //= 10 retur

  5. โปรแกรมหา 2 ตัวเลขในลิสต์ที่ผลรวมเท่ากับ k ใน Python

    ให้ลิสต์ nums และเป้าหมาย k ตรวจสอบว่ามี 2 ตัวเลข (ต่างดัชนี) ที่ผลรวม = k หรือไม่ (รองรับเลขลบและ 0) ตัวอย่าง: nums=[45,18,9,13,12], k=31 → True (18+13) อัลกอริธึม Hash Set (One Pass) เก็บ k - num ที่คาดหวังใน set ถ้า num ปัจจุบันอยู่ใน set → เจอคู่แล้ว การนำไปใช้ class Solution: def solve(se

  6. โปรแกรมตรวจสอบว่าสตริงเป็น palindrome หรือไม่ใน Python

    ตรวจสอบว่าสตริงอ่านจากหน้า-หลัง และ หลัง-หน้า เหมือนกันหรือไม่ ตัวอย่าง: racecar → True อัลกอริธึม กลับสตริงด้วย slicing s[::-1] เปรียบเทียบกับต้นฉบับ การนำไปใช้ class Solution: def solve(self, s): return s == s[::-1] ob = Solution() print(ob.solve(racecar)) # True

  7. โปรแกรมหาจำนวนการดำเนินการน้อยสุดแปลง start เป็น end ใน Python

    มี start < end ทำได้ 2 อย่าง: +1 หรือ ×2 หาจำนวนขั้นตอนน้อยสุดจาก start ถึง end ตัวอย่าง: start=5, end=11 → 2 (5×2=10, +1=11) อัลกอริธึมย้อนกลับ (Greedy) จาก end ย้อนกลับ: ถ้าคี่ → -1 แล้ว /2 (2 ขั้น), ถ้าคู่ → /2 (1 ขั้น) ทำจนกว่า end/2 < start แล้วบวก (end - start) เข้าไป การนำไปใช้ = start:

  8. โปรแกรมหาจำนวนงานที่เสร็จสิ้นได้ภายใต้เงื่อนไขใน Python

    ให้ลิสต์ tasks (strength ที่ต้องการ) และ people (strength ของแต่ละคน) คนละ 1 งาน หางานที่ทำได้สูงสุด ตัวอย่าง: tasks=[4,3,9,15], people=[10,5,3,2] → 3 (คน1 ทำ 9, คน2 ทำ 4, คน3 ทำ 3) อัลกอริธึม Greedy + Sorting เรียง tasks และ people จากน้อยไปมาก คนแต่ละคน (จาก strength น้อยไปมาก) มอบงานที่ต้องการ s

  9. โปรแกรมหาข้อความสุดท้ายใน editor หลังพิมพ์และกด backspace ใน Python

    ให้สตริงแทนการพิมพ์ใน editor สัญลักษณ์ <- แทน backspace หาข้อความที่เหลืออยู่ ตัวอย่าง: ilovepython<-<-ON → ilovepythON (ลบ o,n แล้วพิมพ์ O,N) อัลกอริธึม Stack เดินผ่านตัวอักษร: ถ้าเจอ - และตัวก่อนหน้าใน stack เป็น < → pop < แล้ว pop ตัวอักษรก่อนหน้า (ลบ 1 ตัว) มิฉะนั้น push ตัวอักษรเข้า stac

  10. โปรแกรมหาผลคูณของสามจำนวนที่ไม่ซ้ำกันใน Python

    ให้ตัวเลข x, y, z หาผลคูณ แต่ถ้ามีค่าเท่ากัน 2 ตัวขึ้นไป ให้ไม่นำค่านั้นมาคูณ ตัวอย่าง: 5, 4, 2 → 40 (ต่างกันหมด); 5, 5, 2 → 2 (5 ซ้ำกัน ไม่นับ) อัลกอริธึม ใช้ set เก็บค่าที่ไม่ซ้ำ: เพิ่มเข้า set ถ้ายังไม่มี, ถ้ามีแล้วใส่ใน set remove คูณค่าที่เหลือใน set การนำไปใช้ class Solution: def solve(s

  11. โปรแกรมตรวจสอบว่าเมทริกซ์เป็น Toeplitz Matrix หรือไม่ใน Python

    Toeplitz matrix: ทุกแนวทแยงมุม (ซ้ายบนไปขวาล่าง) มีค่าเท่ากันทุกตำแหน่ง ตัวอย่าง: [[7,2,6], [3,7,2], [5,3,7]] → True (แนวทแยง: 7-7-7, 2-2, 6, 3-3, 5) อัลกอริธึม เช็คทุกเซลล์ (ยกเว้นแถวสุดท้ายและคอลัมน์สุดท้าย): matrix[i][j] == matrix[i+1][j+1] ถ้าทุกคู่ตรงกัน → True การนำไปใช้ class Solution:

  12. โปรแกรมหา transpose ของเมทริกซ์ใน Python

    Transpose เมทริกซ์ n x n: สลับแถวและคอลัมน์ (matrix[r][c] ↔ matrix[c][r]) ตัวอย่าง: [[7,2,6], [[7,3,5], [3,7,2], → [2,7,3], [5,3,7]] [6,2,7]] อัลกอริธึม สร้างเมทริกซ์ใหม่: คอลัมน์เก่า → แถวใหม่ ใช้ nested loop หรือ list comprehension การนำไปใช้ class Solution: def solve(self, ma

  13. โปรแกรมสร้างสามเหลี่ยมบันไดด้วยดอกจันใน Python

    ให้ตัวเลข n สร้างสตริงรูปบันได n ขั้น โดยแต่ละบรรทัดมีช่องว่างนำหน้าและดอกจัน (*) เพิ่มขึ้นทีละ 1 ตัวอย่าง n=5: * ** *** **** ***** อัลกอริธึม ลูป i = 0 ถึง n-1 แต่ละบรรทัด: (n-i-1) ช่องว่าง + (i+1) ดอกจัน เพิ่ม newline ระหว่างบรรทัด การนำไปใช้ class Solution: def solve(self, n):

  14. โปรแกรมตรวจสอบว่าเลขเป็น ugly number หรือไม่ใน Python

    Ugly number: จำนวนที่เฉพาะตัวประกอบมีแค่ 2, 3, 5 เท่านั้น (1 ถือว่าเป็น ugly number) ตัวอย่าง: 18 = 2 × 3 × 3 → True อัลกอริธึม ถ้า n < 0 → False หาร n ด้วย 2, 3, 5 ซ้ำจนไม่ลงตัว ถ้าเหลือ 1 → True มิฉะนั้น False การนำไปใช้ class Solution: def solve(self, n): if n < 0: retur

  15. โปรแกรมหาจำนวนสตริงที่สร้างได้จากการเปลี่ยน 'a' เป็น 'b' ได้ใน Python

    ให้สตริงประกอบ a และ b ตัว a สามารถอยู่เป็น a หรือเปลี่ยนเป็น b ได้ ส่วน b ไม่เปลี่ยน หาจำนวนสตริงที่เป็นไปได้ทั้งหมด ตัวอย่าง: baab → 4 สตริง: [baab,babb,bbab,bbbb] อัลกอริธึม นับจำนวน a ในสตริง แต่ละ a มี 2 ทางเลือก → รวม 2^(จำนวน a) แบบ การนำไปใช้ class Solution: def solve(self, s):

  16. โปรแกรมหาจำนวนจำนวนเต็มที่ไม่ซ้ำกันในรายการที่เรียงลำดับแล้วด้วย Python

    โจทย์ กำหนดให้มีรายการตัวเลขที่เรียงลำดับจากน้อยไปมากแล้ว (nums) ต้องการหาจำนวนของค่าที่ไม่ซ้ำกัน (Unique values) ในรายการนั้น ตัวอย่าง: หาก nums = [3, 3, 3, 4, 5, 7, 7] ผลลัพธ์คือ 4 เพราะค่าที่ไม่ซ้ำกันคือ [3, 4, 5, 7] วิธีแก้ปัญหา (Algorithm) เนื่องจากข้อมูล เรียงลำดับแล้ว สามารถแก้ได้อย่างมีประ

  17. โปรแกรมหา Unix path ที่ resolve แล้วใน Python

    ให้ Unix path เป็นลิสต์สตริง (เช่น [usr,..,usr,.,local,etc,foo]) Resolve ตามกฎ: .. = ย้อนโฟลเดอร์ก่อนหน้า, . = โฟลเดอร์ปัจจุบัน ตัวอย่าง: [usr,..,usr,.,local,etc,foo] → [usr,local,etc,foo] อัลกอริธึม Stack เดินผ่านแต่ละส่วน: ถ้าเป็น .. และ stack ไม่ว่าง → pop ถ้าไม่ใช่ . และไม่ใช่ .. → push การนำไ

  18. โปรแกรมเข้ารหัสสตริงด้วยรหัสแนวตั้ง (Vertical Cipher) ใน Python

    Vertical Cipher: จัดสตริงเป็น n แถว แล้วอ่านเป็นคอลัมน์ (บนลงล่าง ซ้ายไปขวา) ตัวอย่าง: ilovepythonprogramming, n=5 → [ipnrn, lypag, otrm, vhom, eogi] อัลกอริธึม สไลด์สตริง: สำหรับ i ใน 0..n-1 ให้เอา s[i::n] (ทุก n ตัวอักษร เริ่มที่ i) การนำไปใช้ class Solution: def solve(self, s, n): r

  19. โปรแกรมเข้ารหัสสตริงด้วยรหัส Vigenère ใน Python

    Vigenère cipher: ขยับตัวอักษรใน text ไปขวาตามตำแหน่งของตัวอักษรใน key (a=0, b=1,...) วนซ้ำ key ถ้าสั้นกว่า ตัวอย่าง: text=code, key=team → vsdq อัลกอริธึม สำหรับแต่ละคู่ (l,k): shift = ord(k) - ord(a) new_pos = (ord(l) - ord(a) + shift) % 26 + ord(a) การนำไปใช้ class Solution: def solve(self,

  20. โปรแกรมจัดเรียงสระนำหน้าตามด้วยพยัญชนะตามลำดับใน Python

    ให้สตริงพิมพ์เล็ก จัดเรียงให้สระ (a,e,i,o,u) อยู่หน้า เรียงตามลำดับ ตามด้วยพยัญชนะเรียงตามลำดับ ตัวอย่าง: helloworld → eoodhlllrw (สระ: e,o,o → eo; พยัญชนะ: h,l,l,w,r,d → dhlllrw) อัลกอริธึม แยกสระและพยัญชนะเป็นสตริงแยกกัน เรียงแต่ละสตริง แล้วต่อกัน การนำไปใช้ class Solution: def solve(self, s

Total 9001 -คอมพิวเตอร์  FirstPage PreviousPage NextPage LastPage CurrentPage:171/451  20-คอมพิวเตอร์/Page Goto:1 165 166 167 168 169 170 171 172 173 174 175 176 177