此处双指针代表的是一种思想,即两个(或多个)"先锋"动态式跟随并进行信息交流[个人理解],样例如下:
先输入数组大小,然后依次赋值(按照升序)
①若不得有重复元素,代码如下:
1 #include<iostream>
2 using namespace std;
3
4 const int N = 1001;
5 int a[N];
6 int main()
7 {
8
9 int n;
10 cin>>n;
11 for(int i=0;i<n;++i)cin>>a[i];
12
13 int k=1;
14 for(int i=1;i<n;++i)
15 if(a[i]!=a[k-1])//核心
16 a[k++]=a[i];//
17 for(int i=0;i<k;++i)
18 cout<<a[i]<<' ';
19
20 return 0;
21 }
②若是不同的数字各自最多有两个,我们只需要把第15行代码写为
if(a[i]!=a[k-1]||a[i]!=a[k-2])
其实还可以继续优化,即
if(a[i]!=a[k-2])
稍微有点绕,即a[k-2]下标所在元素若是与a[i]不相等的话,则证明a[i]的数字在a[k]之前(不包括a[k])顶多出现过两次;否则忽视a[i],继续向后遍历