首页 > 代码库 > 第11题:移除数组中的重复元素

第11题:移除数组中的重复元素

/*前几天去爬泰山了,一直没更新,上山时还没什么感觉,下山后简直要崩溃啊,骨头都散了,继续更新......*/

第11题:移除数组中的重复元素


给定一个升序排列的数组,去掉重复的数,并返回新的数组的长度。

例如:

   数组A = {1, 1, 2},你的函数应该返回长度2,新数组为{1, 2}

要求:

   不能新开数组分配额外的空间。即常数空间限制。

提示:

   输入一个整数n,以及其对应的数组A[n],输出新数组长度

样例输入

5
0 0 1 1 2

样例输出

3

解析:

#include <stdio.h>

int main()

{
	/*i是循环变量,n和A[]是题目要求,temp是一个临时值,用来存储
	的值与A[i+1]比较,如果相等则把下一个值置空,反之将A[i+1]赋值给temp
	count是置空的数目,用原数组长度减去置空数即为新数组长度*/ 
	int i,n,A[1000],temp,count = 0;
	scanf("%d",&n);
	for(i = 0;i < n;i++)
	{
		scanf("%d",&A[i]);
	}
	temp = A[0];
	for(i = 1;i < n;i++)
	{
		if(A[i] == temp)
		{
			A[i] = ' ';
			count++;
		}
		else
			temp = A[i];
	}
	printf("%d\n",n-count);
	return 0;
} 

如果看不懂欢迎留言提问或者留下邮箱!!!o(∩_∩)o 

第11题:移除数组中的重复元素