每天一道leetCode题--数组--26--删除排序数组中的重复项

题目描述:

给定一个排序数组,你需要使用原地算法删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。

不要使用额外的数组空间,你必须使用原地算法修改输入数组并在使用O(1)额外的条件下完成。

实例:

给定数组 nums = [1,1,2]

函数应该返回的新的长度2,并且原数组nums的前两个元素被修改为1,2。

int removeDuplicates(int * nums, int numSize)
{
	if (numSize == 0) return 0;

	int count = 1;
	for (int i = 0; i < numSize - 1; i++)
	{
		if (nums[i] != nums[i + 1])
			nums[count++] = nums[i + 1];
	}
	return count;
}

int main()
{
	int arr[] = {1,2,2,3,3,5,5};
	int count = removeDuplicates(arr, sizeof(arr) / sizeof(arr[0]));
	printf("%d\n",count);
	for (int i = 0; i < count; i++)
	{
		printf("%d\t",arr[i]);
	}
	printf("\n");
	system("pause");
	return 0;
}
发布了43 篇原创文章 · 获赞 1 · 访问量 2303

猜你喜欢

转载自blog.csdn.net/lpl312905509/article/details/104014036