所谓快慢指针,就是两个指针同向而行,一快一慢。
数组问题中比较常见的快慢指针技巧,是让你原地修改数组。
移除指定元素,保持原来顺序
class Solution {
public int removeElement(int[] nums, int val) {
int slow = 0;
int len = nums.length;
for(int fast = 0; fast < len; fast ++){
if(nums[fast] != val){
nums[slow] = nums[fast];
slow ++;
}
}
return slow;
}
}
删除重复元素,保持有序
class Solution {
public int removeDuplicates(int[] nums) {
if (nums == null || nums.length == 0) {
return 0;
}
int slow = 0;
for (int fast = 1; fast < nums.length; fast++) {
if (nums[fast] != nums[slow]) {
slow++;
nums[slow] = nums[fast];
}
}
return slow + 1;
}
}