26. Remove Duplicates from Sorted Array #
题目 #
给定一个 升序排列 的数组 nums
,原地删除重复出现的元素,使每个元素只出现一次,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致。
如果在删除重复项后有 k
个元素,那么 nums
的前 k
个元素应该保存最终结果。
将最终结果插入 nums
的前 k
个位置后返回 k
。
在 原地 修改输入数组并在使用 O(1)
额外空间的条件下完成。
思路 #
- 双指针
代码 #
class Solution {
public int removeDuplicates(int[] nums) {
if (nums.length == 1) return 1;
/** 双指针法 */
int i = 0, j = 1;
while (j < nums.length) {
if (nums[j] != nums[i]) nums[++i] = nums[j];
j += 1;
}
return i + 1;
}
}