https://leetcode-cn.com/leetbook/read/algorithm-and-interview-skills/xiien3/
因为有人发过了,这里题目发leetcode地址
解法思路
双指针,左指针在最左边,右指针依次向右移动,遇见不同的则把值复制过去同时左指针右移一位,遇见相同的移动右指针。最后返回左指针数值。
解法代码
public static int removeDuplicates(int[] nums) {
int let=0;
int right=1;
while (let!=right&&right<nums.length){
if (nums[let]==nums[right]) {
right++;//遇见相同的跳过
}else if (nums[let]!=nums[right]){
let++;
nums[let]=nums[right]; //不同左指针移动一位,复制值过来。
if (right==let&&right<nums.length){
right++; //如果左指针值和右指针一样则需要移动一下
};
}
}
return let+1;
}
时间复杂度O(n)
空间复杂度O(n)