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

โปรแกรมหาความยาว Sublist ตัวเลขซ้ำได้สูงสุดด้วย K Operations ใน Python

ให้ลิสต์ 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)

  1. num_count นับความถี่ใน Window
  2. max_count = ความถี่สูงสุดใน Window
  3. ขยาย Window ด้านขวา (end)
  4. ถ้า window_size > max_count + k → หด Window ด้านซ้าย (start)
  5. คืนขนาด 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