3. 无重复字符的最长子串
239. 滑动窗口最大值 高频

3. 无重复字符的最长子串

  1. class Solution {
  2. public:
  3. int lengthOfLongestSubstring(string s) {
  4. if (s.empty()) {
  5. return 0;
  6. }
  7. unordered_set<char> cache;
  8. int max_t = 0, left = 0;
  9. for (int i = 0; i < s.size(); i++) {
  10. while (cache.find(s[i]) != cache.end()) {
  11. cache.erase(s[left]);
  12. left += 1;
  13. }
  14. max_t = max(max_t, i - left + 1);
  15. cache.insert(s[i]);
  16. }
  17. return max_t;
  18. }
  19. };

239. 滑动窗口最大值

  1. vector<int> maxSlidingWindow(vector<int> &nums, int k) {
  2. priority_queue<pair<int, int>> queue;
  3. int size = nums.size();
  4. for (int i = 0; i < k; i++) {
  5. queue.emplace(nums[i], i);
  6. }
  7. vector<int> ans = {queue.top().first};
  8. // 1,3,-1,-3,5,3,6,7
  9. for (int i = k; i < size; i++) {
  10. queue.emplace(nums[i], i);
  11. //注意 <= 的判断条件,很容易只写成 <
  12. while (queue.top().second <= i - k) {
  13. queue.pop();
  14. }
  15. ans.emplace_back(queue.top().first);
  16. }
  17. return ans;
  18. }