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