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

    ปัญหา สี่เหลี่ยมขนาด n x n แบ่งเป็น n² ช่องเล็ก มี 1 ช่องสี ตัดสี่เหลี่ยมใหญ่เป็น 2 ส่วนที่เป็น mirror image กัน เส้นตัดห้ามผ่านช่องสี ตรวจสอบว่าตัดได้หรือไม่ เงื่อนไข เส้นตัดสมมาตรต้องผ่านศูนย์กลาง ช่องสีต้องไม่อยู่บนเส้นตัด สำหรับ n คู่: เส้นตัดอยู่ระหว่างแถว/คอลัมน์ n/2 และ n/2-1 ช่องสีอยู่ที่

  2. ตรวจสอบว่าแบ่งอาร์เรย์เป็น 2 ส่วนได้ผลต่างเป็น K หรือไม่ ใน Python

    ปัญหา ให้อาร์เรย์ input_list และค่า n ตรวจสอบว่าสามารถแบ่งเป็น 2 ส่วน (prefix/suffix) ได้ที่ผลต่างของผลรวม = n หรือไม่ ตัวอย่าง input_list = [9,2,5,6], n = 0 Total = 22 Prefix sum: 9, 11, 16, 22 Suffix sum: 13, 11, 6, 0 Diff: |9-13|=4, |11-11|=0 ✓ → Possible แนวคิดการแก้ปัญหา Total sum = S ต้องก

  3. ตรวจสอบว่าอาร์เรย์เรียงได้ด้วยการสลับเพียงครั้งเดียว ใน Python

    ปัญหา ให้อาร์เรย์ ตรวจสอบว่าสามารถเรียงลำดับไม่ลด (non-decreasing) ได้ด้วยการสลับ (swap) เพียง 1 ครั้ง หรือไม่ ตัวอย่าง input_list = [7, 8, 12, 10, 11, 9] Sorted: [7, 8, 9, 10, 11, 12] ตำแหน่งต่างกัน: index 2 (12 vs 9) และ index 5 (9 vs 12) → 2 ตำแหน่ง → swap ได้ → Can be done แนวคิดการแก้ปัญหา

  4. ตรวจสอบว่าอาร์เรย์เป็นจำนวนเต็มติดกัน (รองรับ duplicate) ใน Python

    ปัญหา ให้อาร์เรย์ nums (อาจมีค่าซ้ำ) ตรวจสอบว่าค่าที่ไม่ซ้ำกันเป็นชุดจำนวนเต็มติดกันหรือไม่ ตัวอย่าง nums = [6, 8, 8, 3, 3, 3, 5, 4, 4, 7] → unique: {3,4,5,6,7,8} → ติดกัน → True แนวคิดการแก้ปัญหา เรียงลำดับอาร์เรย์ ตรวจสอบว่าความต่างระหว่างค่าที่ไม่ซ้ำติดกัน ≤ 1 โค้ดตัวอย่าง 1: r

  5. ตรวจสอบว่าอาร์เรย์มีค่าติดกัน (Consecutive) ใน Python

    ปัญหา ให้อาร์เรย์ nums ตรวจสอบว่าประกอบด้วยจำนวนเต็มติดกันหรือไม่ ตัวอย่าง nums = [6, 8, 3, 5, 4, 7] → เรียงได้ 3,4,5,6,7,8 → True แนวคิดการแก้ปัญหา (O(n) time, O(1) space แบบแก้ไขอาร์เรย์) หา min, max ถ้า max - min + 1 != n → False ใช้วิธี ทำเครื่องหมาย โดยทำให้ค่าที่ index ตรงกันเป็นลบ ถ้าพบค่

  6. ตรวจสอบว่าอาร์เรย์มีค่าติดกัน (Consecutive) O(n) time O(1) space รองรับลบ ใน Python

    ปัญหา ให้อาร์เรย์ nums (ไม่เรียง อาจมีลบ) ตรวจสอบว่ามีค่าติดกัน (consecutive integers) หรือไม่ โดย O(n) time, O(1) space ตัวอย่าง nums = [-3, 5, 1, -2, -1, 0, 2, 4, 3] → เรียงได้ -3,-2,-1,0,1,2,3,4,5 → True แนวคิด (คณิตศาสตร์) ถ้าค่าติดกัน → ค่าต่ำสุด = min, ค่าสูงสุด = min + n - 1 ผลรวมควรเป็น n

  7. ตรวจสอบว่าผลรวมอาร์เรย์ทำให้เป็น K ได้ด้วย 3 การดำเนินการ ใน Python

    ปัญหา ให้อาร์เรย์ nums และเป้าหมาย K สามารถทำกับแต่ละสมาชิก ได้เพียง 1 ครั้ง: ทำให้เป็นลบ (คูณ -1) บวกดัชนี (1-based) ลบดัชนี (1-based) ตรวจสอบว่าทำให้ sum(nums) = K ได้หรือไม่ ตัวอย่าง nums = [1,2,3,7], K = 8 ลบดัชนีของ 2,3: [1, 2-2, 3-3, 7] = [1,0,0,7] → sum=8 → True แนวคิด (Dynamic Programmi

  8. ตรวจสอบว่าการแทนค่าบิตเตอรี่ของตัวเลขเป็นพาลินโดรมหรือไม่ ใน Python

    ปัญหา ให้จำนวน n ตรวจสอบว่ารูปแบบไบนารีของมันเป็นพาลินโดรมหรือไม่ ตัวอย่าง n = 9 → binary = 1001 → พาลินโดรม → True แนวคิดการแก้ปัญหา กลับบิตของ n (reverse bits) เปรียบเทียบกับ n เดิม โค้ดตัวอย่าง 0: rev = (rev = 1 return rev def solve(n): return n == reverse_bits(n) print(s

  9. ตรวจสอบว่าการแทนค่าบิตเตอรี่ของสองจำนวนเป็น Anagram กันหรือไม่ ใน Python

    ปัญหา ให้จำนวน x และ y ตรวจสอบว่ารูปแบบไบนารีของทั้งสองเป็น anagram กันหรือไม่ (มีจำนวน 1 เท่ากัน) ตัวอย่าง x = 9 (1001₂), y = 12 (1100₂) → ทั้งคู่มี 1 สองบิต → True ข้อสังเกต Binary anagram ⟺ จำนวน set bits เท่ากัน (เพราะมีแค่ 0 และ 1) โค้ดตัวอย่าง = 1 return count def solve(x, y): ret

  10. ตรวจสอบว่าสตริงไบนารีหาร 3 ลงตัวด้วย DFA ใน Python

    ปัญหา ให้อาร์เรย์บิต nums แทนตัวเลขไบนารี ตรวจสอบว่าหาร 3 ลงตัวหรือไม่ โดยใช้ DFA (Deterministic Finite Automaton) DFA สำหรับ Mod 3 สถานะ = เศษ mod 3 (0, 1, 2) State 0: เริ่มต้น และ accepting Transition: State 0 + bit 0 → State 0 State 0 + bit 1 → State 1 State 1 + bit 0 → State 2 State 1 + bit 1

  11. ตรวจสอบว่าบิตในช่วง L-R ของสองจำนวนเป็นคอมพลีเมนต์กันหรือไม่ ใน Python

    ปัญหา ให้จำนวน x, y และช่วงบิต left ถึง right (นับจากขวา เริ่ม 1) ตรวจสอบว่าบิตในช่วงนี้เป็นคอมพลีเมนต์กัน (0↔1) หรือไม่ ตัวอย่าง x = 41 (101001₂), y = 54 (110110₂), left=2, right=5 บิต 2-5 ของ x: 1001, ของ y: 0110 → คอมพลีเมนต์กัน → True ทฤษฎี บิตคอมพลีเมนต์กัน ⟺ x XOR y มีบิต 1 ทั้งหมดในช่วงนั้

  12. ตรวจสอบว่าบิตของตัวเลขมีบล็อก 1 ติดต่อกันเพิ่มขึ้นจากซ้ายไปขวา ใน Python

    ปัญหา ให้จำนวนเต็มบวก n ตรวจสอบว่าในรูปแบบไบนารี จำนวน 1 ติดต่อกัน (consecutive 1s) เพิ่มขึ้นจากซ้ายไปขวาหรือไม่ ตัวอย่าง n = 1775 → binary = 11011101111 บล็อก 1: 11 (2), 111 (3), 1111 (4) → 2, 3, 4 เพิ่มขึ้น → True แนวคิดการแก้ปัญหา แปลงเป็นสตริงไบนารี สแกนจากซ้ายไปขวา นับความยาวบล็อก 1 ติดต่อก

  13. ตรวจสอบว่ามี subset ใดที่ bitwise AND เป็นกำลังของ 2 หรือไม่ ใน Python

    ปัญหา ให้อาร์เรย์ nums ตรวจสอบว่ามี subset ใดที่ bitwise AND ของสมาชิกทั้งหมดเป็นกำลังของ 2 (1,2,4,8,...) หรือไม่ ตัวอย่าง nums = [22, 25, 9] 22 = 10110₂, 9 = 01001₂ Subset {22, 9}: 10110 & 01001 = 00000? รอ... 22=10110, 9=01001 → AND=00000? ไม่ใช่ ลองใหม่: 22=10110, 25=11001 → AND=10000=16 (2⁴) →

  14. ตรวจสอบว่าครึ่งหน้าครึ่งหลังของสตริงต่างกันอย่างน้อย 1 ตัวอักษร ใน Python

    ปัญหา ให้สตริงพิมพ์เล็ก ตัดครึ่ง (ถ้าคี่ ตัดกลางทิ้ง) ตรวจสอบว่าครึ่งหน้าและครึ่งหลังมีตัวอักษรต่างกัน (ชนิดหรือความถี่) อย่างน้อย 1 ตัว ตัวอย่าง s = helloohekk (ยาว 10) ครึ่งหน้า: hello → h:1, e:1, l:2, o:1 ครึ่งหลัง: ohekk → o:1, h:1, e:1, k:2 ต่างกัน (มี k ในหลัง, l ในหน้า) → True โค้ดตัวอย่าง

  15. ตรวจสอบว่าจัดเรียงตัวอักษรสตริงใหม่เป็นพาลินโดรมได้หรือไม่ ใน Python

    ปัญหา ให้สตริง s ตรวจสอบว่าจัดเรียงตัวอักษรใหม่ได้เป็นพาลินโดรมหรือไม่ เงื่อนไข สตริงสามารถจัดเป็นพาลินโดรมได้ ⟺ มีตัวอักษรที่มีความถี่คี่ได้สูงสุด 1 ตัว ตัวอย่าง s = raaecrc → r:2, a:2, e:1, c:2 → มีแค่ e เป็นคี่ → จัดเป็น racecar ได้ → True โค้ดตัวอย่าง from collections import Counter def sol

  16. ตรวจสอบว่าสลับตัวอักษรในสตริงหนึ่งได้อีกสตริงหนึ่งหรือไม่ (Anagram) ใน Python

    ปัญหา ให้สตริง s และ t ตรวจสอบว่าสลับตัวอักษรของ s ได้ t หรือไม่ (คือ anagram) ตัวอย่าง s = worldlloeh, t = helloworld → ทั้งคู่มีตัวอักษร h,e,l,l,o,w,o,r,l,d เท่ากัน → True แนวคิดการแก้ปัญหา ถ้าความยาวต่างกัน → False นับความถี่ตัวอักษรใน s ลบความถี่ตามตัวอักษรใน t → ถ้ามีค่าติดลบ → False โค้ด

  17. ตรวจสอบว่าการต่อสตริงวงเล็บสองสตริงสมดุล (Balanced) หรือไม่ ใน Python

    ปัญหา ให้สตริงวงเล็บ s และ t (มีเฉพาะ ( และ )) ตรวจสอบว่า s+t หรือ t+s เป็น balanced parentheses หรือไม่ ตัวอย่าง s = ()())), t = ()(()( s+t = ()()))()(()( → ไม่สมดุล t+s = ()(()()())) → สมดุล → True แนวคิดการแก้ปัญหา เขียนฟังก์ชน์ is_balanced(s) ตรวจสอบวงเล็บสมดุลด้วย stack ตรวจสอบ is_balanced(

  18. ตรวจสอบว่าจำนวนตัวหารเป็นเลขคู่หรือคี่ ใน Python

    ปัญหา ให้จำนวน n ตรวจสอบว่าจำนวนตัวหาร (divisors) เป็นคู่หรือคี่ ทฤษฎีสำคัญ จำนวนตัวหารเป็นคี่ ⟺ n เป็นจำนวนกำลังสองสมบูรณ์ (Perfect Square) เพราะตัวหารมักคู่กัน (d, n/d) ยกเว้นกรณี d = n/d (รากที่สอง) ตัวอย่าง n = 75 → ตัวหาร: 1,3,5,15,25,75 (6 ตัว, คู่) → Even n = 36 → ตัวหาร: 1,2,3,4,6,9,12,18

  19. ตรวจสอบว่าค่าทศนิยมของเลขฐานแปด (Octal) หาร 7 ลงตัวหรือไม่ ใน Python

    ปัญหา ให้ตัวเลขในฐานแปด (Octal) ตรวจสอบว่าค่าทศนิยม (Decimal) ของมัน หาร 7 ลงตัวหรือไม่ ทฤษฎี เลขฐานแปด: d_k d_{k-1} ... d_1 d_0 = Σ d_i × 8^i เนื่องจาก 8 ≡ 1 (mod 7) → 8^i ≡ 1 (mod 7) ดังนั้น ค่าทศนิยม mod 7 = Σ d_i (mod 7) = ผลรวมหลัก mod 7 ตัวอย่าง Octal 61 → 6×8 + 1 = 49 → 49 mod 7 = 0 → True

  20. ตรวจสอบว่าความต่างของพื้นที่สองสี่เหลี่ยมจัตุรัสเป็นจำนวนเฉพาะหรือไม่ ใน Python

    ปัญหา ให้จำนวน x และ y ตรวจสอบว่า x² - y² เป็นจำนวนเฉพาะหรือไม่ ทฤษฎี x² - y² = (x-y)(x+y) ผลคูณของจำนวนเต็มสองจำนวนจะเป็นเฉพาะได้ก็ต่อเมื่อ: ตัวหนึ่งเป็น 1 อีกตัวเป็นจำนวนเฉพาะ เนื่องจาก x-y และทั้งคู่บวก → ต้องมี x-y = 1 และ x+y เป็นเฉพาะ ตัวอย่าง x = 7, y = 6 → x-y=1, x+y=13 (เฉพาะ) → 49-36

Total 9001 -คอมพิวเตอร์  FirstPage PreviousPage NextPage LastPage CurrentPage:210/451  20-คอมพิวเตอร์/Page Goto:1 204 205 206 207 208 209 210 211 212 213 214 215 216