1、通过重新定义一个新的数组,然后将其重新赋值给nums数组,输出此时的index,该方法需要额外的内存
java
class Solution {
public int removeDuplicates(int[] nums) {
int[] res = new int[nums.length];
res[0] = nums[0];
int index = 1;
for( int i=1;i<nums.length;i++ ) {
if(nums[i]!=nums[i-1]) {
res[index] = nums[i];
index++;
}
}
for(int i=0;i<nums.length;i++) {
nums[i] = res[i];
}
return index;
}
}
2、或者是使用双指针可以节省额外的内存空间
java
class Solution {
public int removeDuplicates(int[] nums) {
int slow = 0;
for(int fast=1;fast<nums.length;fast++) {
if(nums[fast] != nums[slow]) {
slow++;
nums[slow]=nums[fast];
}
}
return slow+1;
}
}
其实两个不同的指针就可以得到两个不同的数组,只是原数组无法复原,并且要在彼此不相互干扰的情况下,才能正确用双指针解答