码迷,mamicode.com
首页 > 编程语言 > 详细

去除数组中的重复元素

时间:2015-03-17 23:43:20      阅读:203      评论:0      收藏:0      [点我收藏+]

标签:

方法1:开辟辅助空间

#include<vector>
#include<algorithm>
#include<iostream>
#define LENGTH 10
using namespace std;
void Unique(){
	int array[LENGTH]={1,1,1,2,2,4,4,6,6,6};
	int pre=array[0],cur=array[1];
	int temp[LENGTH];
	int k=0;
	int i=1;//cur和i指向同步
	while(i<=9){
		if(pre!=cur){
			temp[k++]=pre;
			pre=cur;
			if(i!=9) //数组的最后一个比较特殊,需要单独判断
				cur=array[++i];
			else 
				++i; //结束while循环
		}else if(pre==cur){
			pre=cur;
			cur=array[++i];
		}
	}
	temp[k]=array[i-1];//数组最后一种元素需要添加到结果集中
	for(int i=0;i<=k;i++)
		cout<<temp[i]<<" ";
}
int main(){
	Unique();
	return 0;
}

方法2:不需要开辟辅助空间

在编程中经常会遇到,需要删除数组中的重复元素的问题,现在已经有很多人实现了。但是目前已经实现的算法中,有的需要多次创建数组,有的写的很复杂。经过思考和时间,写出了一个最为高效的算法,不需要多次创建数组,算法也很简单。
代码如下:
#include<vector>
#include<algorithm>
#include<iostream>
using namespace std;
int Unique(int array[],int arrayLength){
	int length=1; //去除重复元素后的数组长度 
	bool isExist=false;  ////第一个元素肯定不重复,所以目标数组长度初始为1
	for(int i=1;i<arrayLength;i++){
		//将当前值与目标数组值一一比较,没有重复则加入目标数组
		for(int j=0;j<length;j++){  
			if(array[i]==array[j]){  
				isExist=true;  
			}  
		}  
		if(!isExist){  
			array[length]=array[i];  
			length++;  
		}             
		isExist=false;  //默认不存在重复
	}  
	return length;  
}
int main(){
	int array[]={1,1,2,2,3,4,4,6,6,6};
	int n=Unique(array,10);
	for(int i=0;i<n;i++)
		cout<<array[i]<<" ";
	return 0;
}

去除数组中的重复元素

标签:

原文地址:http://blog.csdn.net/sxhlovehmm/article/details/44355275

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!