1.题目:
给你一个升序排列的数组nums,请你原地删除重复出现的元素,使每个元素只能出现一次,返回删除后数组的新长度。元素的相对顺序应该保持一致。
2.案例
3.思路:
使用双指针解题
代码如下:使用的是java语言:
class Solution {
public int removeDuplicates(int[] nums) {
//边界条件判断
if(nums == null || nums.length == 0){
return 0;
}
int left = 0;
for(int right = 1;right < nums.length; right++){
//当左指针和右指针指向的值不同时,左指针+1,把右指针的值赋值给左指针
if(nums[left]!=nums[right]){
nums[++left] = nums[right];
}
}
return ++left;
}
}
4.解析:
使用双指针解题思路:
定义两个指针,分别为left和right,左指针始终在最左边,右指针始终往右移动
当左指针和右指针指向的值相同时,左指针不动
当左指针和右指针指向的值不同时,左指针往右移动一步,然后把右指针的值赋值给左指针