1.删除有序数组的重复项
- 前提条件 : 有序 升序
- 使用快慢指针解题
- 慢指针表示新数组的下标
- 如果慢指针的值等于快指针的值,表示有重复元素,那么就直接跳过,快指针值加一
- 如果慢指针值不等于快指针的值,表示该值可以留下
public static 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[slow] != nums[fast]){
nums[++slow] = nums[fast];
}
}
return slow + 1;
}
2.移动零
- 使用左右指针解题
- 如果右指针不等于零的时候,和左指针进行替换操作,保证大于零的数在左边,零在右边
public void moveZeroes(int[] nums) {
int slow = 0;
for(int fast = 0; fast < nums.length; fast++){
if(nums[fast] != 0){
int temp = nums[slow];
nums[slow++] = nums[fast];
nums[fast] = temp;
}
}
}