小技巧-双指针
Nemaleswang
ACM退役狗一只
展开
-
Leetcode 76. Minimum Window Substring
题目链接:Minimum Window Substring题目大意:给你一个字符串s和字符串t,要求你找到包含t中所有字符的s字符的字串题目思路:双指针即可,在扫描的时候维护一个字符集,这个字符集动态的根据双指针的位置进行更新,每次更新之后与字符串t进行比较即可,思路比较简单,不过时间卡的比较死,需要用unordered_map这个哈希表来进行表示,用map的话会导致超时。时间复杂度&&空间复杂度:O(lens*lent)&&O(lent)class Solution原创 2020-08-18 11:55:07 · 173 阅读 · 0 评论 -
Leetcode 15. 3Sum
题目链接:3Sum题目大意:给定一个数组,要求找出所有不重复的三元组,三元组之和为0题目思路:最开始考虑O(n3)的做法,三层for遍历,当然不行,考虑减一层,a+b+c = 0,我们可以两层for先找a和b,对c使用哈希表判断存在与否,使用哈希表可以记录数字出现与否,对每个相同的数字只找最后一个,然后判断该三元组是否存在,但是该办法很难判断重复,所以可以排好序之后,找到某个相同数的倒数第二个...原创 2019-11-26 20:48:19 · 129 阅读 · 0 评论 -
Leetcode 75. Sort Colors
题目链接:75. Sort Colors题目大意:给定一个数组,里面只包含0,1,2三个数,要求只做一次线性扫描,将数组变得有序题目思路:我们只有0,1,2三种不同的数,我们只需要考虑把0放在前面,2放在后面即可,类比快排,我们可以考虑这样的情况,我们定义三个指针,l,r,mid,l之前的值我们置为0,r之后的值我们置为2,mid我们用做扫值,碰到0就往前面扔,碰到2,就往后面扔,碰到2的时候...原创 2019-11-22 16:23:30 · 140 阅读 · 0 评论 -
Leetcode 239. Sliding Window Maximum
题目链接:239. Sliding Window Maximum题目大意:给定一个无序数组和一个k值,要求找出从前往后所有长度为k的滑动窗口中的最大值题目思路:用一个双端队列维护一个最大值序列,序列中保存序号,每次遇到新的值,我们可以将这个新值与序列中所有值从小到大进行比较,如果该值大于序列中的值,那么这之间的旧值就没有用了,因为新值更大并且序号更高,那么后面的最大值一定轮不到这个值,而序号比...原创 2019-11-12 20:22:21 · 184 阅读 · 0 评论 -
Educational Codeforces Round 5 D - Longest k-Good Segment
题目链接:Longest k-Good Segment题目大意:给你一个长度为n的序列,问你里面不同的数不超过k个的最长序列是什么,给出左端点和右端点的值题目思路:由于范围有点大,双指针扫一下就好#include <bits/stdc++.h>using namespace std;const int maxn = 1e6+10;int n,k,a[maxn],u[maxn],ans,l,r;in原创 2017-07-11 23:28:10 · 356 阅读 · 0 评论 -
hdoj 6231 K-th Number
题目链接:K-th Number题目大意:给你一个长度为n的数字,然后需要你找出这个序列里面长度大于等于k的所有子序列里第k小的数,然后扔到另一个数组里面去,然后寻找另一个数组里面第m大的数,问这个数题目思路:我们可以将问题转化一下:我们需要去二分一个最大的x,且这个x满足有大于等于m个区间的第k小大于等于x(这样的话就满足了这个枚举的数要比我们最后要得到的数要大)。所以关键在于,如何求有多少个区间原创 2017-12-01 15:32:15 · 346 阅读 · 0 评论