思路:假想一个数组,实际上并不存在,就是已知数组的本身,用指针i遍历已知数组,指针j指向假想数组的最后一个元素,每次在假想数组中查找是否存在当前i指向的元素,若存在,i++,若不存在,则给假想数组增加一个元素a[i],实际上就是给自己本身赋值。
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin>>n;
int a[n],j=0;
for(int i=0;i<n;i++)
cin>>a[i];
for(int i=0;i<n;i++)
{
int k;
for(k=0;k<j;k++)
{
if(a[i]==a[k]) break;
}
if(k==j) a[j++]=a[i];
}
for(int m=0;m<j;m++) cout<<a[m]<<" ";
return 0;
}
本文介绍了一种基于双指针技巧的数组去重算法。通过遍历数组,使用两个指针i和j,其中i遍历原数组,j用于跟踪假想数组的末尾。当在假想数组中未找到重复元素时,将该元素加入假想数组。此算法实现在不使用额外空间的情况下去除数组中的重复元素。

1万+

被折叠的 条评论
为什么被折叠?



