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

  • 题目:删除排序数组中的重复项
  • 难度:简单
  • 题目描述:给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。
  • 示例1:给定数组 nums = [1,1,2],
    函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。
    你不需要考虑数组中超出新长度后面的元素。
  • 示例2:给定 nums = [0,0,1,1,1,2,2,3,3,4],
    函数应该返回新的长度 5, 并且原数组 nums 的前五个元素被修改为 0, 1, 2, 3, 4。
    你不需要考虑数组中超出新长度后面的元素。
  • 要求:返回值为修改后的数组长度

C语言算法一:双指针
在这里插入图片描述

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

C语言算法二:常规思路
在这里插入图片描述

int removeDuplicates(int* nums, int numsSize){
	int index = 0;
	int i;
	while(index < numsSize-1){
		if(nums[index] == nums[index+1]){
			for(i=index;i<numsSize-1;i++){
				nums[i] = nums[i+1];
			}
			numsSize--;
            continue;
		}
		index++;
	}
	return numsSize;
}

猜你喜欢

转载自blog.csdn.net/weixin_45437022/article/details/106730681
今日推荐