题目:给定一个有序数组nums,请原地删除所有的重复元素,并输出去除重复元素后的数组长度(不能使用额外的数组空间)
解题思路:
使用双指针的思路,left = 0,right = 1,当left指向元素的值等于right指向元素的值时,left不动,right向右移动一位,当left指向元素的值与right指向元素的值不同时,left右移动一位,并将right的值赋值给移动后的left指向的值。
代码:
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++){
if(nums[left] != nums[right]){
nums[++left] = nums[right];
}
}
return ++left;
}
}