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

    ปัญหา ให้จำนวน p และ q ตรวจสอบว่าผลรวมตัวหาร (รวม 1 แต่ไม่รวมตัวมันเอง) เท่ากันหรือไม่ ตัวอย่าง p = 559 (ตัวหาร: 1, 13, 43 → sum=57), q = 703 (ตัวหาร: 1, 19, 37 → sum=57) → True แนวคิดการแก้ปัญหา เขียนฟังก์ชน์ divSum(n) หาผลรวมตัวหาร วน i จาก 2 ถึง sqrt(n) หาตัวหารคู่ เปรียบเทียบ divSum(p) กับ d

  2. ตรวจสอบว่าผลรวมแถวที่ i เท่ากับผลรวมคอลัมน์ที่ i ในเมทริกซ์หรือไม่ ใน Python

    ปัญหา ให้เมทริกซ์ 2 มิติ ตรวจสอบว่ามีแถว i ใดที่ผลรวมเท่ากับคอลัมน์ i หรือไม่ ตัวอย่าง Matrix 4x4: Row 0 sum = 2+3+4+5 = 14 Col 0 sum = 2+10+1+1 = 14 → True แนวคิดการแก้ปัญหา วนลูปแต่ละแถว i คำนวณผลรวมแถว i และคอลัมน์ i ถ้าเท่ากันคืน True ทันที โค้ดตัวอย่าง def solve(mat): n = len(mat)

  3. ตรวจสอบว่าจัดเรียงอาร์เรย์ได้ด้วยการสลับเฉพาะคู่ดัชนีที่กำหนด ใน Python

    ปัญหา ให้อาร์เรย์ nums (ค่า 0 ถึง n-1 ไม่ซ้ำ) และรายการคู่ดัชนี pairs ที่อนุญาตให้สลับได้ ตรวจสอบว่าสามารถเรียงอาร์เรย์ได้หรือไม่ ตัวอย่าง nums = [6,1,7,3,0,5,4,2], pairs = [(0,4),(6,0),(2,7)] → สลับได้เป็น [0,1,2,3,4,5,6,7] → True แนวคิดการแก้ปัญหา (Graph + BFS) สร้างกราฟจาก pairs (ดัชนีเป็นโหน

  4. ตรวจสอบว่าอาร์เรย์มีสมาชิกเท่ากับผลคูณของสมาชิกอื่นหรือไม่ ใน Python

    ปัญหา ให้อาร์เรย์ nums ตรวจสอบว่ามีสมาชิกตัวใดตัวหนึ่งที่มีค่าเท่ากับผลคูณของสมาชิกอื่นทั้งหมดหรือไม่ ตัวอย่าง nums = [3,2,24,4,1] → 24 = 3×2×4×1 → True แนวคิดการแก้ปัญหา คำนวณผลคูณทั้งหมด mul สำหรับแต่ละสมาชิก x ตรวจสอบว่า x == mul / x (คือ x² == mul) โค้ดตัวอย่าง def solve(nums): mul = 1

  5. ตรวจสอบว่าอาร์เรย์มีสมาชิกเท่ากับผลรวมของสมาชิกอื่นหรือไม่ ใน Python

    ปัญหา ให้อาร์เรย์ nums ตรวจสอบว่ามีสมาชิกตัวใดตัวหนึ่งที่มีค่าเท่ากับผลรวมของสมาชิกอื่นทั้งหมดหรือไม่ ตัวอย่าง nums = [3,2,10,4,1] → 10 = 3+2+4+1 → True แนวคิดการแก้ปัญหา คำนวณผลรวมทั้งหมด total ถ้า total เป็นเลขคู่ และมีสมาชิกเท่ากับ total/2 → True เพราะถ้า x = sum(others) → total = x + x = 2x

  6. ตรวจสอบว่าอาร์เรย์เป็น "Beautiful" หรือไม่ ใน Python

    ปัญหา อาร์เรย์ nums (ค่าทั้งหมดไม่ซ้ำ) เป็น Beautiful ถ้า: สมาชิกอยู่ในช่วง 1 ถึง n (n = ความยาวอาร์เรย์) อาร์เรย์ ไม่ได้ เรียงจากน้อยไปมาก ตัวอย่าง nums = [2,6,1,5,3,4] → มีค่า 1-6 ครบ ไม่เรียงลำดับ → True แนวคิดการแก้ปัญหา คำนวณผลรวมของอาร์เรย์ ตรวจสอบว่ามีค่าซ้ำหรือไม่ ตรวจสอบว่าเรียงลำดับ

  7. ตรวจสอบว่าการแทนค่าบิตเตอรี่มีบล็อก 0 และ 1 ติดกันเท่ากันหรือไม่ ใน Python

    ปัญหา ให้ตัวเลข num ตรวจสอบว่าในรูปแบบไบนารี จำนวนบล็อกติดต่อกันของ 0 และ 1 เท่ากันหรือไม่ (ไม่นับ 0 และตัวเลขที่เป็น 1 ทั้งหมด) ตัวอย่าง num = 455 → binary = 111000111 → บล็อก: 111, 000, 111 → ความยาว 3,3,3 → True แนวคิดการแก้ปัญหา แปลงเป็นสตริงไบนารี (ตัด 0b) นับความยาวบล็อกติดต่อกันของ 0 และ

  8. ตรวจสอบว่าตัวอักษรในสตริงเป็นพาลินโดรมหรือไม่ (O(1) space) ใน Python

    ปัญหา ให้สตริง s (อาจมีตัวเลข/สัญลักษณ์) ตรวจสอบว่า ตัวอักษรภาษาอังกฤษพิมพ์เล็ก ที่อยู่ในสตริงเป็นพาลินโดรมหรือไม โดยใช้พื้นที่เพิ่มเติม O(1) ตัวอย่าง s = ra$5ce58car → ตัวอักษร: r a c e c a r → พาลินโดรม → True แนวคิดการแก้ปัญหา (Two Pointers) ใช้ pointer ซ้าย (left) และขวา (right) ขยับ left ไป

  9. ตรวจสอบว่าตัวอักษรในสตริงเรียงตามลำดับอักษรหรือไม่ ใน Python

    ปัญหา ให้สตริง s ตรวจสอบว่าตัวอักษรเรียงตามลำดับพจนานุกรม (non-decreasing) หรือไม่ ตัวอย่าง s = mnnooop → m ≤ n ≤ n ≤ o ≤ o ≤ o ≤ p → True แนวคิดการแก้ปัญหา แปลงสตริงเป็นลิสต์ตัวอักษร เรียงลำดับลิสต์ เปรียบเทียบกับลิสต์เดิม โค้ดตัวอย่าง def solve(s): return list(s) == sorted(s) print(solv

  10. ตรวจสอบว่าสแต็กมีค่าคู่กันเรียงติดกัน (Pairwise Sorted) หรือไม่ ใน Python

    ปัญหา ให้สแต็กของตัวเลข ตรวจสอบว่าค่าจับคู่ (จากด้านบนลงมา) ต่างกัน 1 หรือไม่ (อาจเพิ่มหรือลด) ถ้าจำนวนคี่ ตัวบนสุดไม่นับ ต้องเก็บสแต็กเดิมไว้ ตัวอย่าง stk = [5, 6, -4, -5, 12, 11, 6, 7, 22] (top=22) จับคู่: (5,6), (-4,-5), (12,11), (6,7) → ทุกคู่ต่าง 1 → True แนวคิดการแก้ปัญหา ใช้ลิสต์ช่วย (te

  11. ตรวจสอบว่าตัวเลขที่เล็กที่สุดจากหลักที่กำหนด มีหลักแรกและหลักสุดท้ายเป็นจำนวนเฉพาะ ใน Python

    ปัญหา ให้อาร์เรย์ของหลัก (digits) สร้างตัวเลขที่เล็กที่สุดได้ แล้วตรวจสอบว่าตัวเลขที่รวมจากหลักแรกและหลักสุดท้าย (ทั้งสองลำดับ) เป็นจำนวนเฉพาะหรือไม่ ตัวอย่าง digits = [5,2,1,7] → ตัวเลขน้อยที่สุด = 1257 หลักแรก+หลัง = 17 (เฉพาะ), หลัง+แรก = 71 (เฉพาะ) → คืนค่า (1257, 17, 71) แนวคิดการแก้ปัญหา น

  12. ตรวจสอบว่าความถี่ของทุกหลักในตัวเลขเท่ากันหรือไม่ ใน Python

    ปัญหา ตัวเลขถูกเรียกว่า สมดุล (Balanced) ถ้าความถี่ของทุกหลักที่ปรากฏเท่ากัน ตัวอย่าง num = 562256 → หลัก 5,6,2 แต่ละหลักปรากฏ 2 ครั้ง → True แนวคิดการแก้ปัญหา แปลงตัวเลขเป็นสตริง นับความถี่ของแต่ละหลัก นำค่าความถี่ทั้งหมดใส่เซต → ถ้าขนาดเซต = 1 → ทุกค่าเท่ากัน โค้ดตัวอย่าง from collections im

  13. ตรวจสอบว่ามีตัวอักษรซ้ำเกินครึ่งหนึ่งของความยาวสตริงหรือไม่ ใน Python

    ปัญหา ให้สตริง s len(s)/2 หรือไม่ ตัวอย่าง 4.5) → True แนวคิดการแก้ปัญหา นับความถี่ของแต่ละตัวอักษร (ใช้ dictionary หรือ Counter) len(s)//2 โค้ดตัวอย่าง half for count in freq.values()) print(solve(CC*Ca5&CC)) # True อินพุต / เอาต์พุต Input: CC*Ca5&CC Output: True

  14. ตรวจสอบว่าอาร์เรย์ลดเป็นศูนย์ได้ด้วยการดำเนินการ k ครั้งหรือไม่ ใน Python

    ปัญหา ให้อาร์เรย์ nums และค่า k การดำเนินการ: ลบค่าที่น้อยที่สุด (ที่ไม่ใช่ศูนย์) ออกจากทุกค่าที่ไม่ใช่ศูนย์ ทำซ้ำ k ครั้ง ต้องการทราบว่าสามารถทำให้ทุกค่าเป็นศูนย์ได้หรือไม่ ข้อสังเกตสำคัญ จำนวนครั้งที่ต้องดำเนินการ = จำนวนค่าที่แตกต่างกัน (distinct values) ในอาร์เรย์ ตัวอย่าง nums = [2, 2, 3, 4]

  15. ตรวจสอบว่าอาร์เรย์มีตัวหารครบทุกตัวของจำนวนเต็มบางจำนวนหรือไม่ ใน Python

    ปัญหา ให้อาร์เรย์ nums ตรวจสอบว่ามันเป็นชุดตัวหารครบของจำนวนเต็มบางจำนวนหรือไม่ ตัวอย่าง nums = [1, 2, 3, 4, 6, 8, 12, 24] → เป็นตัวหารของ 24 → True แนวคิดการแก้ปัญหา หาค่าสูงสุดในอาร์เรย์ (เป็นตัวเลขที่ต้องการ) หาตัวหารทั้งหมดของค่าสูงสุดนั้น เปรียบเทียบชุดตัวหารกับอาร์เรย์ต้นฉบับ (เรียงลำดับก่

  16. ตรวจสอบว่าตัวเลขประกอบด้วยหลัก 0 และ 1 เท่านั้น ใน Python

    ปัญหา ให้ตัวเลข num ตรวจสอบว่าประกอบด้วยหลัก 0 และ 1 เท่านั้นหรือไม่ ตัวอย่าง num = 101101 → True แนวคิดการแก้ปัญหา สร้างเซตของหลักทั้งหมดในตัวเลข ลบ 0 และ 1 ออกจากเซต ถ้าเซตว่าง → ประกอบด้วย 0,1 เท่านั้น → True โค้ดตัวอย่าง 0: digits.add(num % 10) num //= 10 digits.discar

  17. ตรวจสอบว่าเป็นจำนวนออเร (Ore Number) หรือไม่ ใน Python

    ปัญหา จำนวนออเร (Ore Number) คือ จำนวนที่ค่าเฉลี่ยฮาร์โมนิกของตัวหารทั้งหมดเป็นจำนวนเต็ม ตัวอย่าง n = 28 → ตัวหาร: 1,2,4,7,14,28 (6 ตัว) ฮาร์โมนิก = 6 / (1/1+1/2+1/4+1/7+1/14+1/28) = 6 / (2) = 3 → เป็นจำนวนเต็ม → True แนวคิดการแก้ปัญหา หาตัวหารทั้งหมดของ n คำนวณค่าเฉลี่ยฮาร์โมนิก: H = count / su

  18. ตรวจสอบว่า k พอจะไปถึงปลายอาร์เรย์ได้หรือไม่ (Prime refill) ใน Python

    ปัญหา ให้อาร์เรย์ nums และค่า k เริ่มต้นที่ index 0: ถ้าค่าที่ index นั้นเป็น จำนวนเฉพาะ → ใส่ค่า k กลับเป็นค่าเริ่มต้น ถ้าไม่ใช่จำนวนเฉพาะ → k -= 1 ถ้า k ≤ 0 และยังไม่ถึงปลาย และค่าถัดไปไม่ใช่เฉพาะ → False ตัวอย่าง nums = [8, 5, 6, 7, 8], k = 2 8(ไม่เฉพาะ)→k=1, 5(เฉพาะ)→k=2, 6(ไม่เฉพาะ)→k=1, 7

  19. ตรวจสอบว่าวงกลมอยู่ในขอบเขตระหว่างสองวงกลม同心 (Concentric) หรือไม่ ใน Python

    ปัญหา ให้สองวงกลม同心 มีรัศมี r1 (นอก) และ r2 (ใน) ให้วงกลมที่ 3 มีศูนย์กลางที่ (x, y) และรัศมี r ตรวจสอบว่าวงกลมที่ 3 อยู่ภายในขอบเขตระหว่างสองวงกลม同心หรือไม่ เงื่อนไข ระยะห่างจากศูนย์กลางถึงจุด (x,y) คือ d = sqrt(x² + y²) วงกลมที่ 3 ต้องไม่ล้ำออกนอกรัศมี r1: d + r <= r1 วงกลมที่ 3 ต้องไม่ล้ำเข้าใน

  20. ตรวจสอบว่าเลขช่วง (degree) ของจุดยอด แทนกราฟหรือต้นไม้ (Tree) ใน Python

    ปัญหา ให้รายการเลขช่วงของจุดยอด ตรวจสอบว่าเป็นต้นไม้ (Tree) หรือกราฟทั่วไป (Graph) ทฤษฎี สำหรับกราฟที่มี V จุดยอด และ E เส้นขอบ: ต้นไม้: E = V - 1 และสัมพันธ์กัน ผลรวมเลขช่วง = 2E (Handshaking Lemma) ดังนั้น ต้นไม้ต้องมี sum(degrees) = 2*(V-1) ตัวอย่าง deg = [2,2,3,1,1,1] → V=6, sum=10, 2*(6-1

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