class Solution {
public:
int lengthOfLongestSubstring(string s) {
if (s.empty()) {
return 0;
}
unordered_set<char> cache;
int max_t = 0, left = 0;
for (int i = 0; i < s.size(); i++) {
while (cache.find(s[i]) != cache.end()) {
cache.erase(s[left]);
left += 1;
}
max_t = max(max_t, i - left + 1);
cache.insert(s[i]);
}
return max_t;
}
};
vector<int> maxSlidingWindow(vector<int> &nums, int k) {
priority_queue<pair<int, int>> queue;
int size = nums.size();
for (int i = 0; i < k; i++) {
queue.emplace(nums[i], i);
}
vector<int> ans = {queue.top().first};
// 1,3,-1,-3,5,3,6,7
for (int i = k; i < size; i++) {
queue.emplace(nums[i], i);
//注意 <= 的判断条件,很容易只写成 <
while (queue.top().second <= i - k) {
queue.pop();
}
ans.emplace_back(queue.top().first);
}
return ans;
}