26. 删除有序数组中的重复项 - 力扣(LeetCode) (leetcode-cn.com)

26. 删除有序数组中的重复项

  • 题目
  • 解题思路
  • 代码

题目

给你一个 升序排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。

由于在某些语言中不能改变数组的长度,所以必须将结果放在数组nums的第一部分。更规范地说,如果在删除重复项之后有 k 个元素,那么 nums 的前 k 个元素应该保存最终结果。

将最终结果插入 nums 的前 k 个位置后返回 k 。

不要使用额外的空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。

解题思路

  • 解题思路
  • 首先还是先判断出为空的数组
  • 接着,遍历数组,然后定义一个常量(index)
  • 因为这个数组是递增的,所有不需要在重新排序
  • 然后判断nums[i]的值是否与nums[index]相同,不同则index+1,数组前移到index+1的位置

代码

public int removeDuplicates(int[] nums) {
        if (nums == null || nums.length == 0) {
            return 0;
        }
        int index = 0;
        for (int i = 0; i < nums.length; i++) {
            if(nums[i] != nums[index]){
                nums[index+1] = nums[i];//index的位置是元素
                index++;
            }
        }
        return index+1;
    }

26. 删除有序数组中的重复项 - 力扣(LeetCode) (leetcode-cn.com)_第1张图片

你可能感兴趣的:(力扣刷题,JavaSE基础,java,数据结构)