删除排序数组中的重复项
思路
双指针法:
提供的数组有个特性,就是已经排序好的。
需要处理的为记录当前出现的唯一元素的位置,此处通过一个指针标记,另外还需要一个指针来记录当前遍历的元素位置。
此处有个边界需要特别处理,即数组长度为1的时候。
class Solution{
public int removeDuplicate(int[] nums){
// 边界处理
if(nums.length<=1){
return 1;
}
// 记录唯一值的指针
int i=0;
for(int j=1;j<nums.length;j++){
if(nums[j]!=nums[i]){
nums[++i]=nums[j]; // 此处采用++i递增,即将唯一元素指针偏移后进行赋值,及保证题目中要求的在原地修改输入数组。
}
}
return i+1;
}
}