当前位置: 首页> 游戏> 游戏 > 汕头市龙湖区疫情最新情况_设计工作室怎么接单_中国十大互联网公司排名_c++线上培训机构哪个好

汕头市龙湖区疫情最新情况_设计工作室怎么接单_中国十大互联网公司排名_c++线上培训机构哪个好

时间:2025/7/9 17:51:41来源:https://blog.csdn.net/m0_73801775/article/details/143465604 浏览次数:0次
汕头市龙湖区疫情最新情况_设计工作室怎么接单_中国十大互联网公司排名_c++线上培训机构哪个好

题目:设计算法,在数组R[n]中删除重复的元素,要求移动元素的次数较少,并使剩下元素间的相对次序保持不变。

答:问题分析:如果在找到重复数字后,将后面的数全部前移覆盖掉该重复数字,需要大量的移动次数。

思路:利用指针j,指向当前没有重复元素数组的最后一个元素,即R[0]~R[j]中的元素都不重复。因此,j刚开始指向R[0]。从R[1]开始遍历数组继续寻找与R[0]~R[j]不重复的元素。对于第一次出现的数字:

               j++;

               R[j]=R[i];

对于重复出现的数字,j保持不变。然后i++,继续访问下一个元素。

具体代码:

#include<iostream>
using namespace std;int main(){int n;cout<<"请输入元素个数:"<<endl; cin>>n;int R[n];cout<<"请输入各个元素:"<<endl;for(int i=0;i<n;i++){cin>>R[i];}int j=0;//指针指向当前没有重复元素的数组的最后一个元素for(int i=1;i<n;i++){//从第2个元素开始寻找不重复元素 bool flag=false;for(int k=0;k<=j;k++){if(R[i]==R[k]){flag=true;//有重复元素 }} if(!flag){//如果R[0]~R[j]中没有和R[i]相同的元素 j++;R[j]=R[i];}} cout<<endl<<"一共有"<<j+1<<"个不同的元素:"<<endl; for(int i=0;i<=j;i++){cout<<R[i]<<" ";}return 0;
}

关键字:汕头市龙湖区疫情最新情况_设计工作室怎么接单_中国十大互联网公司排名_c++线上培训机构哪个好

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: