双指针、滑动窗口
溺水的鱼xu
这个作者很懒,什么都没留下…
展开
-
最长无重复子数组、子串
NC41 最长无重复子数组#include<bits/stdc++.h>class Solution {public: int maxLength(vector<int>& arr) { // write code here map<int,int> mp; int i=0,j=1; mp[arr[0]]=0; int Max=1; while(j&l原创 2021-07-27 15:24:07 · 185 阅读 · 0 评论 -
NC61 两数之和
两数之和 这道题的思想就是双指针加上记录数字所在数组的下标。我的解法:他垃圾了因为需要排序,但已排序下标就乱了。我的思路因为说是有唯一结果,相同的数组最多有两个,如果是相同的,必是想两个数和为targart或者这个相同数不与其他数字组成target,所以两个map记录下标足够了#include<bits/stdc++.h>class Solution {public: vector<int> twoSum(vector<int>& num.原创 2021-07-13 07:46:34 · 56 阅读 · 0 评论 -
NC28 最小覆盖子串
NC28 最小覆盖子串 滑动窗口的思想这道题目用到了滑动窗口这一大杀器,它可以解决如下问题:最小覆盖子串(LeetCode76)字符串排列(LeetCode567)统计字母异位词(LeetCode438)最长无重复子串(LeetCode3) 滑动窗口的基本思想:用两个字典分别维护窗口中字符的统计数量、以及被求解子串中字符的统计数量用双指针遍历主字符串,双指针的初始值均为0,窗口的范围是[left, right)(左闭右开)遍历过程中,不断增大、缩小窗口,并更新状态 class So原创 2021-07-15 16:40:32 · 736 阅读 · 0 评论 -
滑动窗口问题总结
滑动窗口问题一般都是一个字符串匹配s1另一个 字符串s2的问题。滑动窗口的问题一般分成一下几个步骤走:1,记录下字符串s1中的字符mp12,使用双指针的形式遍历字符串s2,同时记录下遍历的字符mp23,在遍历字符串的过程中,没次移动都比较一下mp1和mp2是否想通了,想通了就认为是匹配成功了。窗口大小不固定![在这里插入图片描述](https://img-blog.csdnimg.cn/img_convert/c869adea70321e6ce51c5012d008a278.pngclass S原创 2021-07-21 10:56:10 · 158 阅读 · 0 评论 -
最长无重复子数组
这道题可以使用双指针即滑动窗口的方法写,不过有一个好的优化过程class Solution {public: int findLength(vector<int>& nums1, vector<int>& nums2) { vector< vector<int> >dp(nums1.size()+5,vector<int> (nums2.size()+5)); nums1.insert原创 2021-07-21 13:04:05 · 33 阅读 · 0 评论 -
NC82 滑动窗口的最大值
NC82 滑动窗口的最大值原创 2021-07-21 16:33:03 · 245 阅读 · 0 评论 -
两数、三数之和问题
两数之和双指针两数之和问题显而意见是用双指针来写,要想使用双指针前提是数组提前有序。这道题的坑就在这里,数组无序,我们需要先排序,但是题目让返回的却是数字所在原数组的下标,如果已排序就乱了,因此有两种方法,一种就是我认为简单的我们在进行排序,只不过把下标和数组放在一起进行排序。#include<bits/stdc++.h>int vis[100100];//这里的默认为是大于号bool cmp(pair<int,int>a, pair<int,int> b)原创 2021-07-22 12:25:37 · 80 阅读 · 0 评论 -
LeetCode 1160. 拼写单词
LeetCode 1160. 拼写单词原创 2021-07-28 13:16:51 · 49 阅读 · 0 评论