题意:给一个排好序的新数组,删除重复的值,返回新的长度
初步分析:因为只允许在给出的空间,所以只能够数组给自己赋值。
我们用一个int型变量来作为游标,记录当前要进行比较的值。如果相同,那么继续往后遍历,游标不动,否则两者都加1,并且赋值。
其实就是两个指针在走,在比较,一个是遍历,一个是只有不同的才走。脑子里好好想象下就清楚了。
代码:
public class Solution {
public int removeDuplicates(int[] nums) {
if(nums.length == 0)
return 0;
int i = 0;
int j = 1;
int prei = nums[0];
while(i < nums.length)
{
if(prei != nums[i]) //出现不同的时候
{
nums[j] = nums[i];
j++; //j只记录不同的
prei = nums[i]; //记录i的值,只有不同的时候才记录
}
i++;
}
return j;
}
}