给定一个排序数组,在原数组中“删除”重复出现的数字,使得每个元素只出现一次,并且返回“新”数组的长度。
不要使用额外的数组空间,必须在不使用额外空间的条件下原地完成。
样例
样例 1:
输入: []
输出: 0
样例 2:
输入: [1,1,2]
输出: 2
解释: 数字只出现一次的数组为: [1,2]
解题思路:
双指针法。定义[0,k]区间的数组每个元素仅出现一次,遍历i,当遇到nums[k] != nums[i]时,则将i元素赋值到k+1,再将k++,仍然满足定义。
class Solution {
public int removeDuplicates(int[] nums) {
int k = 0;
for(int i=1; i<nums.length; i++)
if(nums[k] != nums[i])
nums[++k] = nums[i];
return k+1;
}
}

本文介绍了一种在不使用额外空间的情况下从已排序数组中删除重复元素的方法。通过双指针技巧,确保每个元素仅出现一次并返回新数组的有效长度。
436

被折叠的 条评论
为什么被折叠?



