leetcode-删除排序数组中的重复项-4

删除排序数组中的重复项

题目要求
  给定一个排序数组,你需要用把数组中重复的元素删除,每个元素只出现一次,返回新数组的长度,要求空间复杂度位O(1)。
思路
  一快一慢的两个下标,快的用来遍历每一个元素,慢的用来记录新数组的下标,没遍历一个元素就拿来和慢下标的数字进行比较,如果不相同就存到新数组中,相同,快数组继续遍历,直到原数组遍历完。
代码实现

int removeDuplicates(int* nums, int numsSize){
	int p = 0;
	if (numsSize < 2)
	{
		return numsSize;
	}
	for (int i = 1; i < numsSize; i++)
	{
		if (nums[p] != nums[i])
		{
			p++;
			nums[p] = nums[i];
		}
	}

	return p + 1;
}

猜你喜欢

转载自blog.csdn.net/weixin_43580319/article/details/113123811