放两个指针
,
,
负责遍历整个数组,
负责存储不重复的元素
例如数组[1,1,2]:
0 | 1 | 2 | 情况 |
---|---|---|---|
1 | 1 | 2 | n[i]==n[j] |
i | j | ||
1 | 1 | 2 | |
i | j | j++ | |
1 | 1 | 2 | n[i]!=n[j] |
i | j | i++ | |
1 | 2 | 2 | 赋值n[i]=n[j] |
i | j | 此时i=1,输出长度(i+1) |
java代码:
class Solution {
public int removeDuplicates(int[] nums) {
int i=0,j=0;
if(nums.length<=1){
return 1;
}
while(j<nums.length){
if(nums[i]==nums[j]){
j++;
}
else{
i++;
nums[i]=nums[j];
j++;
}
}
return i+1;
}
}
(看了评论才知道这种方法叫双指针法)