輸入: 排好序的數(shù)組
輸出: 返回不重復(fù)的個(gè)數(shù),并修改數(shù)組為不重復(fù)的數(shù)組,要求不能使用額外的空間
思路: 循環(huán)判斷前一個(gè)和當(dāng)前是否相等,循環(huán)移動(dòng)位置.
class Solution {
public int removeDuplicates(int[] nums) {
if(nums.length==0){
return 0;
}
int t=nums[0],res=nums.length;
int l=0,r=-1,count=0;
for(int i=1;i<nums.length-count;i++){
int item = nums[i];
if(item != t){
t = item;
r = i-1;
int len=r-l;
if(len>=1){
move(nums,l,r);
count+=len;
}
i-=len;
l = i;
}
}
r = nums.length-count-1;
int len=r-l;
if(len>=1){
move(nums,l,r);
count+=len;
}
return res - count;
}
private void move(int[] nums,int l,int r){
int len=r-l;
for(int i=l+1;i<nums.length-len;i++){
nums[i]=nums[i+len];
}
}
}