LeetCode刷题笔记(一)数组——滑动窗口

LeetCode刷题笔记(一)数组——滑动窗口

提示:[刷题顺序参考]

文章目录

    • LeetCode刷题笔记(一)数组——滑动窗口
  • 前言
  • 一、概述
  • 二、代码模板
  • 三、相关题目
  • 四、相关知识(unordered_map)
    • 1.概述
    • 2.具体使用
  • 总结


前言

LeetCode刷题小白,本文主要记录数组之移除元素的一点刷题笔记,如有错误,联系更正。

一、概述

滑动窗口的题目一般需要有快慢两个指针,外循环中实现对快指针每轮的枚举,内循环将慢指针向右滑动,而快指针并不会回溯到原来的位置,实现“滑动窗口”的功能。

二、代码模板

具体可参考题目:LeetCode 209.长度最小的子数组:

class Solution {
public:
    int minSubArrayLen(int target, vector<int>& nums) {
        int n = nums.size();
        int sum = 0;
        int ans = INT_MAX;
        int i = 0,j = 0;
        
        while(j < n)
        {
            sum += nums[j];
            while(sum >= target)	//窗口收缩条件
            {
                ans = (j-i+1) < ans ? (j-i+1) : ans;
                sum = sum - nums[i];
                i++;				//慢指针向右移动
            }
            j++;					//窗口扩大
        }

        return ans < INT_MAX ? ans : 0;
    }
};

三、相关题目

904. 水果成篮
76. 最小覆盖子串
两道题目使用c++中的unordered_map较为方便,76. 最小覆盖子串难度略大,可能需要先了解一些关于unordered_map的知识。

四、相关知识(unordered_map)

1.概述

unordered_map是c++STL的一种无序容器(哈希容器)。无序容器是 C++ 11 标准才正式引入到 STL 标准库中的,这意味着如果要使用该类容器,则必须选择支持 C++ 11 标准的编译器。
unordered_map存储键值对 类型的元素,其中各个键值对键的值不允许重复,且该容器中存储的键值对是无序的。容器的底层实现采用的是哈希表的存储结构。

2.具体使用

  1. unordered_map 容器在头文件中,并位于 std 命名空间中。因此,如果想使用该容器,代码中应包含如下语句:
#include 
using namespace std;
  1. 定义
unordered_map<string,string> umap;	//定义存储  类型键值对的 unordered_map 容器
  1. 初始化
    umap = {{"指针详解","https://blog.csdn.net/yxlrh/article/details/112788075?spm=1001.2014.3001.5501"},
    {"二分查找","https://blog.csdn.net/yxlrh/article/details/119253136?spm=1001.2014.3001.5501"},
    {"移除元素","https://blog.csdn.net/yxlrh/article/details/119276446?spm=1001.2014.3001.5501"}};
    //也可以在定义时直接初始化,方法如上
  1. 复制(拷贝)
unordered_map<string,string> umap2 = umap;
unordered_map<string,string> umap2(umap);
//两种方式效果相同,都是将umap复制给umap2
//之后改变其中一个容器,另一个不会受到影响

unordered_map<string,string> umap2(++umap.begin(),umap.end());
//使用迭代器进行部分拷贝
  1. 成员方法
    LeetCode刷题笔记(一)数组——滑动窗口_第1张图片

总结

以上就是今天要讲的内容,本文简单记录了在LeetCode刷题过程中关于滑动窗口的算法,及在这些题目中需要注意的问题。刷题过程中如有问题,可在评论区一起讨论哦!

你可能感兴趣的:(LeetCode刷题笔记,c语言,c++,指针,数据结构,算法)