0026. Remove Duplicates From Sorted Array

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;
    }
}