26. 删除排序数组中的重复项

用两个指针就行,一个指针i初始时指向头元素,另一个j指向下标为1的元素(所以说,当长度为1时单独判断,长度为1就返回1)
之后,如果i下标的元素等于j下标的元素,j++,假如到了i和j代表的元素不等时,说明i,j中间这些都是重复元素,都是等于nums[i]的元素,此时,nums[i+1]=nums[j],i++。i的值就是值不重复的元素的个数
class Solution {
public int removeDuplicates(int[] nums) {
if(nums.length==1)
return nums.length;
int length=nums.length;
int i=0;
int j=1;
while(j<length)
{
if(nums[i]==nums[j])
{
//i++;
//j=i+1; 这样的话,如果刚好遇到前一个数与后一个数相同,就是死循环,所以
//么一次,j自加1
j++;
}
else
{
nums[i+1]=nums[j];
i=i+1;
j+=1;
}
}
return i+1;
}
}

浙公网安备 33010602011771号