题目地址:leetcode-cn.com/problems/re…
思路:初看题目有点无从下手,看了题解以后才恍然大悟。题目只需要返回删除数组以后的长度,而且数组本身是有序的。使用双指针,一个慢指针,一个快指针。慢指针用来记录对比出的不一样的值,快指针用来对比。简单来说就是快指针从数组从前往后遍历,碰到和前一项不一样的值的时候,就将值传给慢指针,然后慢指针+1。快指针碰到数组边界以后循环结束,方法返回慢指针的下标即可。
上代码:
class Solution {
public int removeDuplicates(int[] nums) {
if(nums.length == 0) {
return 0;
}
int slow = 1;
int fast = 1;
while(fast < nums.length) {
if(nums[fast] != nums[fast - 1]) {
nums[slow] = nums[fast];
slow++;
}
fast++;
}
return slow;
}
}