Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

โปรแกรมตรวจสอบอนุกรมเลขคณิต (Arithmetic Progression) ใน Python


ภาพรวม

ตรวจสอบว่าลิสต์ตัวเลข nums สามารถเรียงเป็นอนุกรมเลขคณิต (AP) ได้หรือไม่ โดยที่ผลต่างระหว่างตัวเลขติดกันทุกคู่ต้องเท่ากัน

ตัวอย่าง

nums = [9,1,17,5,13]

เรียงแล้ว: [1,5,9,13,17] → ผลต่างร่วม = 4 → เป็น AP → คืนค่า True

ขั้นตอนการแก้ปัญหา

  1. เรียงลิสต์ nums ด้วย sorted()
  2. ถ้าความยาว ≤ 1 ให้คืนค่า True (ถือว่าเป็น AP)
  3. คำนวณผลต่างร่วม const = nums[1] - nums[0]
  4. วนลูปตรวจสอบ nums[i+1] - nums[i] == const สำหรับทุก i
  5. ถ้ามีคู่ไหนไม่ตรง ให้คืนค่า False
  6. จบลูป ให้คืนค่า True

ตัวอย่างโค้ด (Python)

def solve(nums):
    nums = sorted(nums)
    if len(nums) > 1:
        const = nums[1] - nums[0]
    else:
        return True
    for i in range(len(nums)-1):
        if nums[i+1] - nums[i] != const:
            return False
    return True

nums = [9,1,17,5,13]
print(solve(nums))

อินพุต

[9,1,17,5,13]

เอาต์พุต

True

ความซับซ้อน

  • เวลา: O(n log n) จากการเรียง
  • พื้นที่: O(n) หรือ O(1) ถ้าเรียงแบบ in-place