基础算法:双指针算法

双指针,指的是在遍历对象的过程中,不是普通的使用单个指针进行访问,而是使用两个相同方向( 快慢指针 )或者相反方向( 对撞指针 )的指针进行扫描,从而达到相应的目的。. 换言之,双指针法充分使用了数组有序这一特征,从而在某些情况下能够简化一些运算。

参考(www.cnblogs.com/huansky/p/13508533.html) 

例题:

给定一个长度为 n 的整数序列,请找出最长的不包含重复数字的连续子序列,输出它的长度。

输入格式

第一行包含整数 n。第二行包含 n 个整数(均在 0∼100000 范围内),表示整数序列。

数据范围

1≤n≤100000

输入样例

5

1 2 2 3 5

输出

3

代码 :

#include
using namespace std;
const int N=10010;
int n,res;
int a[N],s[N];
int main()
{
  cin>>n;
  for(int i=0;i>a[i];
  for(int i=0,j=0;i1)
  	{
  		s[a[j]]--;
  		j++;
	}
	res=max(res,i-j+1);
  }
  cout<

你可能感兴趣的:(算法,c++,c语言)