AcWing 799. 最长连续不重复子序列 #include <bits/stdc++.h> using namespace std; const int N=1e6+10; int a[N],s[N]; int main(){ int n; cin>>n; for(int i=0;i<n;i++ ...
快排的划分,归并排序的归并,之后的kmp都是双指针算法。 双指针算法的两大类: 指向两个区间或指向一个区间 双指针算法一般是这样的 双指针算法运用了某些单调性质,可以将暴力的O(n^2)优化到O(n) 先来一个小的问题热身,输入一行若干个用空格隔开的单词,然后依次每行输出一个单词。具体应用看这里ht ...
分类:
其他好文 时间:
2020-06-30 10:56:43
阅读次数:
44
#最长连续不重复子序列 给定一个长度为n的整数序列,请找出最长的不包含重复数字的连续子序列,输出它的长度。 我们使用一个hash表和双指针动态维护双指针所夹区间内的信息。 i在前j在后。 每次i向前都使得hash[a[i]]++以此来增加序列中的元素。 接下来可能会出现冲突即[j, i]存在相同数字 ...
分类:
其他好文 时间:
2020-06-26 22:28:38
阅读次数:
44
# 题意 给定长度为n 的序列,求连续的没有重复元素的最长子序列的长度 # 题解双指针,保证j<i ,用一个数组记录当前值的出现个数,因为是连续的,当 a[ i ]出现两次的时候,j一直向前,并且映射的次数减1,直到 i 对应的值的出现次数为1时候,取最大记录即可 1 #include<bits/s ...
分类:
其他好文 时间:
2020-03-25 00:50:16
阅读次数:
64
"原题" 题意很好理解,主要通过本题理解一下双指针,我们可以用两个指针i,j分别记录子序列的结尾位置和开头位置。我们先枚举结尾位置i,因为要找最长的 不重复 连续子序列,j就代表从i往前最远能够到达的位置。而要判断某个数是否出现过,我们可以开一个数组s[N]来记录每个数出现的次数,我们在枚举i时,就 ...
双指针算法本质上就是将具有单调性的算法复杂度为O(N^2)的朴素算法通过双指针优化到O(n)的一种优化方法。是一种十分常用的算法。 设计双指针算法我们一般先写出它的朴素算法,然后按照模板: for( int i = 0, j = 0 ; i < n ; i ++) { //check()是按照题目逻 ...
分类:
编程语言 时间:
2020-01-29 19:51:43
阅读次数:
83
网址 https://www.acwing.com/solution/AcWing/content/2069/ 题目描述给定一个长度为n的整数序列,请找出最长的不包含重复数字的连续子序列,输出它的长度。 算法1(枚举) O(n)O(n)滑动窗口 记录窗口的起始点 l r同时使用一个数组或者map记录 ...
UVA 11572 唯一的雪花题意:给你从1到n的数组,要求求得其中的最长连续不重复子序列,经典的滑窗问题,方法是维护一个窗口,设置左框和右框,然后不断的进行维护和更新方法一:#include"iostream"#include"set"#include"cstring"#include"cstdi...
分类:
编程语言 时间:
2015-08-05 18:15:17
阅读次数:
157
Problem 2 ---Add Two Numbers简单的模拟题。Problem 3 ---Longest Substring Without Repeating Characters题意: 给定一个字符串序列,找出最长无重复的子序列。如"abcabcbb"的最长不重复子序列为"abc"思路: ...
分类:
其他好文 时间:
2015-04-10 19:28:51
阅读次数:
100