题目和删除元素那道题很相似,题目判断的方式一样,我们返回一个数组长度,数组中超过该长度的视为不在数组中,即已删除。
双指针。
大意了,忽视了题目是已经排好序的数组。我还按照【删除元素】这套题酷酷写,写出来,明显不对。
充分利用好·已排序·的特性。
arrays[i] <= arrays[i+1]
if (arrays[i] == arrays[i+1]),则在后面子序列中找到第一个不等于(大于)arrays[i]的数,把这个数放到i+1的索引位置。
class Solution {
public int removeDuplicates(int[] nums) {
int i=0, j=1;
while(j<nums.length){
if(nums[i] == nums[j]){
j++;
}else{
nums[i+1] = nums[j];
i++;
}
}
return i+1;
}
}