class Solution {
public int removeDuplicates(int[] nums) {
if(nums == null || nums.length == 0) return 0;
int count = 1;//建立一个计数器 1 的时候为nums i 次数为1, 2 的时候nums i 的次数为2;
int i = 0, j = 1; //两个指针 i对应的位置是输出数组数字遍历的位置 j的位置是在i后面 去找原先数组数字;
while(j < nums.length) {
if(nums[i] == nums[j]) { //当两个位置的数字相同时 分为两种情况:
if(count != 2) { //第一种是 i位置的数字只出现过一次 那么i往后挪一位;
i++;
nums[i] = nums[j];//因为需要每个数出现两次 所以把j位置赋值给现在的i位置 再把j往后挪一位;
j++;
count++;//这个时候i 位置的值次数+1;
} else {//另一种情况是i位置数字次数已经是2了 那就直接j位置后移;
j++;
}
} else { //如果 两个位置不相等 直接把i位置的下一位赋值成j位置的值 再把j向后移;
i++;
nums[i] = nums[j];
j++;
count = 1;//这个时候i所在的位置是新的数值 所以需要把计数器重置为1;
}
}
return i + 1;
}
}
Remove Duplicates from Sorted Array II
最新推荐文章于 2019-05-19 14:53:58 发布