https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array/
第一次提交:
class Solution {
public int removeDuplicates(int[] nums) {
int slow = 0;
int fast = 1;
Boolean bool = false;
for (; fast < nums.length; fast++) {
if (nums[slow] == nums[fast]) {
bool=true;
}
if (nums[slow] != nums[fast]) {
slow++;
}
if (bool) {
nums[slow] = nums[fast];
}
}
return slow+1;
}
}
第二次提交:
class Solution {
public int removeDuplicates(int[] nums) {
int slow = 0;
int fast = 1;
Boolean bool = false;
//找到快慢指针相同的位置
while (fast < nums.length && nums[fast] != nums[slow]){
fast++;
slow++;
}
for (; fast < nums.length; fast++) {
if (nums[slow] != nums[fast]) {
slow++;
nums[slow] = nums[fast];
}
}
//因为返回的是长度,所以加一
return slow+1;
}
}
第三次提交:
class Solution {
public int removeDuplicates(int[] nums) {
int slow = 0;
int fast = 0;
for (; fast<nums.length; fast++) {
if (nums[slow] != nums[fast]) {
nums[slow+1] = nums[fast];
slow++;
}
}
return slow+1;
}
}
比较满意的结果了,算是。
这种题就注意几点:
- slow节点是我们的结果值
- 利用fast节点进行遍历
之后就是一个不断替换的过程。