Skip to content
Rain Hu's Workspace
Go back

[LeetCode] 定長 Sliding Window Pattern

Rain Hu
class Window {
public:
    virtual void add(int num) = 0;
    virtual void erase(int num) = 0;
    virtual bool check(int num) = 0;
    virtual ~Window() {}
};

class Solution {
private:
    unique_ptr<Window> _w;
public:
    bool solve(vector<int>& nums, int k) {
        _w = make_unique<WindowImpl>(k);
        int n = nums.size();

        for (int i = 0; i < n; i++) {
            if (i >= k) _w->erase(nums[i-k]);
            if (_w->check(nums[i])) return true;
            _w->add(nums[i]);
        }
        return false;
    }
};

Share this post on:

Previous
[LeetCode] 1456. Maximum Number of Vowels in a Substring of Given Length
Next
[LeetCode] Sliding Window and Double Pointer 科學刷題