题目描述:
说明:
示例 1:
示例 2:
思路:
注意:数组是有序的
- slow = 2, fast = 2
- 判断nums[slow - 2] == nums[fast] 是否相等
- 如果想等,说明nums[slow]重复出现了3次
- 不相等,说明nums[fast]元素符合要求,放到slow位置num[slow] = nums[fast],增加‘有序’边界slow++
-
数组遍历完返回slow
实现:
class Solution {
public int removeDuplicates(int[] nums) {
int slow = 2, fast = 2;
for (fast = 2; fast < nums.length; fast++) {
if (nums[slow - 2] != nums[fast]) {
nums[slow++] = nums[fast];
}
}
return slow;
}
}