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

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


ปัญหา

ให้อาร์เรย์ nums (อาจมีค่าซ้ำ) ตรวจสอบว่าค่าที่ไม่ซ้ำกันเป็นชุดจำนวนเต็มติดกันหรือไม่

ตัวอย่าง

nums = [6, 8, 8, 3, 3, 3, 5, 4, 4, 7] → unique: {3,4,5,6,7,8} → ติดกัน → True

แนวคิดการแก้ปัญหา

  1. เรียงลำดับอาร์เรย์
  2. ตรวจสอบว่าความต่างระหว่างค่าที่ไม่ซ้ำติดกัน ≤ 1

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

def solve(nums):
    nums.sort()
    for i in range(1, len(nums)):
        if nums[i] - nums[i-1] > 1:
            return False
    return True

print(solve([6, 8, 8, 3, 3, 3, 5, 4, 4, 7]))  # True

วิธีอื่น: ใช้ Set

def solve_set(nums):
    unique = set(nums)
    return max(unique) - min(unique) + 1 == len(unique)

อินพุต / เอาต์พุต

Input:  [6, 8, 8, 3, 3, 3, 5, 4, 4, 7]
Output: True