删除数组中重复的元素(两种求法)

●删除数组中重复的元素 (1int removedulplicate(int *str,int n)
{
    
    
	int i=0;
	int j=0;
	int length=1;
	for(i=0;i<n;i++)
	{
    
     //比较第二个数与第一个数,若不等,则放到数组中
	   若相等,则比较第三个数与第一个数,以此类推
		if(str[i]!=str[length-1])
		{
    
    
		str[length++]=str[i];
		}
	}
	return length;
}


int main()
{
    
    

int arr[]={
    
    1,2,2,3,3,4,5,6,7,8};
int n=sizeof(arr)/sizeof(arr[0]);
int length=0;
length=removedulplicate(arr,n);
int i=0;
for(i=0;i<length;i++)
{
    
    
	printf("%d ",arr[i]);
	
}
	return 0;
}
///
///

●删除数组中重复的元素 (2)
通过下标来操作
int removesame(int *arr,int length)
{
    
    
	int p=0;        //前下标
	int q=1;        //后下标
	while(q<length)
	{
    
    
	//前后两个元素是否相等,若相等则后下标加一,
	反之将后下标元素放到数组中
		if(arr[p]==arr[q])
		{
    
    
			q++;
		}
		else
		{
    
    
			arr[++p]=arr[q];
			q++;
		}
		
	}
	return p+1;
	
}

int main()
{
    
    
	int arr[]={
    
    1,2,2,3,3,4,5,6};
	int len=sizeof(arr)/sizeof(arr[0]);
	int n=0;
	n=removesame(arr,len);
	int i=0;
	for(i=0;i<n;i++)
	{
    
    
		printf("%d ",arr[i]);
	}
	return 0;
}

猜你喜欢

转载自blog.csdn.net/cfk17829572643/article/details/109684100