给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。
思路:假设数组[1,1,1,1,2,2,3] 假设后面全部相同,重复元素移除后数组长度为(length)1 从第一个数开始向后找和第一个元素不同的数 第五个数和第一个数不同,将其赋值给第(length+1)2个数,再将重复元素移除后数组长度length+1 假设后面全部相同,重复元素移除后数组长度为2 因为是一个排序数组所以接着往下找和第二个元素不同的数 以此类推直至遍历完数组。 代码: int removeDuplicates(int* nums, int numsSize){ int length=1; for(int i=0;i<numsSize;i++){ if(nums[i]!=nums[length-1]){ nums[length]=nums[i]; length++; } } return length; }