给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。
不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。
示例 1:
给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1,2。你不需要考虑数组中超出新长度后面的元素。
JAVA解决办法:
思路:变量i指向数组第一个值,nums[j]为nums[i]之后第一个不为num[i]的数;
判断num[i]和num[j]是否相等,如果相等,j向后移动,如果不相等,将nums[j]的值赋给nums[i]。以此类推,直至j移动到原数组最后一位。
class Solution {
public int removeDuplicates(int[] nums) {
int size=nums.length;
int i=0,j=1;
if(size<=0){
return 0;
}
int newsize=1;
while(j<size){
if(nums[i]<nums[j]){
nums[i+1]=nums[j];
i++;
j++;
newsize++;
}else{
j++;
}
}
return newsize;
}
}