สมมติว่าเรามีรายการตัวเลข nums และจำนวนเต็ม k เราต้องเลือกสมาชิกจาก nums สร้างรายการขนาด k ให้ความต่างระหว่างค่าสูงสุดและต่ำสุดน้อยที่สุด
ตัวอย่างเช่น หาก nums = [3, 11, 6, 2, 9], k = 3 ผลลัพธ์คือ 4 จากรายการ [2, 3, 6]
ขั้นตอนการแก้ปัญหา (Sorting + Sliding Window)
- เรียงลำดับ
nums - สร้างรายการ
lsเก็บความต่าง - วนลูป
iจาก 0 ถึงlen(nums) - k:ls.append(nums[i + k - 1] - nums[i])
- คืนค่า
min(ls)
ตัวอย่างโค้ด Python
class Solution:
def solve(self, nums, k):
nums.sort()
ls = []
for i in range(len(nums) - k + 1):
ls.append(nums[i + k - 1] - nums[i])
return min(ls)
ob = Solution()
nums = [3, 11, 6, 2, 9]
k = 3
print(ob.solve(nums, k)) # Output: 4
อินพุต
[3, 11, 6, 2, 9], 3
เอาต์พุต
4