அல்கோரிதம்sliding window advanced

Sliding Window Advanced (Variable Conditions, Frequency Maps, Complex Logic) — மேம்பட்ட சாளரம்

TT
Testlaa Team
May 14, 20261 min read

மேம்பட்ட சாளரம் — அதிர்வெண் வரைபடம், பல நிபந்தனைகள், சில சமயம் atMost(k)-atMost(k-1) எண்ணிக்கை தந்திரம்.

உண்மை உலகில் இது ஏன் முக்கியம்?

ஸ்பாம் கண்டறிதல் — பல சமிக்ஞைகள் உருளும் உரை. மரபியல் — k-mer, ஐயமுள்ள அடிப்படை.

மையக் கருத்து (மாணவர்களுக்கான விளக்கம்)

atMost(K) உதவி; சரியாக K வேறுபாட்டு வடிவம்; K=0, வெற்று சரம்.

Pythonில் முயற்சி செய்வோம்

from collections import Counter


def at_most_k_distinct(nums: list[int], k: int) -> int:
    ct, L, ans = Counter(), 0, 0
    for R, x in enumerate(nums):
        ct[x] += 1
        while len(ct) > k:
            y = nums[L]
            ct[y] -= 1
            if ct[y] == 0:
                del ct[y]
            L += 1
        ans += R - L + 1
    return ans


def subarrays_exactly_k_distinct(nums: list[int], k: int) -> int:
    return at_most_k_distinct(nums, k) - at_most_k_distinct(nums, k - 1)


print(subarrays_exactly_k_distinct([1, 2, 1, 2, 3], 2))

அடிக்கடி நேரும் தவறுகள்

  • atMost கழிப்பு ஒற்றைப் பிழை.
  • எண் வெடிப்பு.

முக்கியச் சுருக்கக் குறிப்புகள்

  • சரியாக எதிர் அதிகபட்சம் மாற்றம்.
  • monotone நிபந்தனை.

Tags:

Sliding windowPythonமாணவர்கள்