ให้ลิสต์ nums และ k สามารถเปลี่ยนค่าตัวเลขได้สูงสุด k ครั้ง หาความยาว Sublist ติดกันที่มีตัวเลขเหมือนกันมากที่สุด
ตัวอย่าง: nums=[8,6,6,4,3,6,6], k=2 → 6 (เปลี่ยน 4,3 → 6 ได้ [8,6,6,6,6,6,6])
ขั้นตอน (Sliding Window + Frequency Map)
num_countนับความถี่ใน Windowmax_count= ความถี่สูงสุดใน Window- ขยาย Window ด้านขวา (
end) - ถ้า
window_size > max_count + k→ หด Window ด้านซ้าย (start) - คืนขนาด Window สุดท้าย
ตัวอย่างโค้ด
from collections import defaultdict
def solve(nums, k):
if not nums:
return 0
num_count = defaultdict(int)
max_count = 0
start = 0
for end, num in enumerate(nums):
num_count[num] += 1
max_count = max(max_count, num_count[num])
if end - start + 1 > max_count + k:
num_count[nums[start]] -= 1
start += 1
return end - start + 1
nums = [8, 6, 6, 4, 3, 6, 6]
k = 2
print(solve(nums, k)) # Output: 6อินพุต
[8, 6, 6, 4, 3, 6, 6], 2
เอาต์พุต
6