美文网首页
Leetcode-26-从排序数组中删除重复项

Leetcode-26-从排序数组中删除重复项

作者: WindMajor | 来源:发表于2018-04-08 12:22 被阅读50次

给定一个有序数组,你需要原地删除其中的重复内容,使每个元素只出现一次,并返回新的长度。
不要另外定义一个数组,您必须通过用 O(1) 额外内存原地修改输入的数组来做到这一点。
示例:

给定数组: nums = [1,1,2],

你的函数应该返回新长度 2, 并且原数组nums的前两个元素必须是1和2
不需要理会新的数组长度后面的元素

分析:

首先我们要了解,数组一旦生成之后,是不可以增删元素的,想要变更元素只能生成新的数组,而题目要求不能创建新数组。

初一看到这里也许觉得此题无解,但要仔细读题,可以发现,不需要理会新的数组长度的后面的元素

也就是说,只需要将后面的不重复的元素赋值给前面重复的元素位,最终数组的长度可以保持不变。

而返回值是此有序数组中所有不重复的元素个数,在数组的前端将这些不重复的元素按顺序排布即可。

据此分析,此题清晰明了。java解答如下:

class Solution {
    public int removeDuplicates(int[] nums) {
        if (nums.length == 0) {
            return 0;
        }

        if (nums.length == 1) {
            return 1;
        }

        int index1 = 0;
        int index2 = 2;
        for (int i = 1; i < nums.length; i++) {
            if (nums[i] > nums[index1]) {
                index1 += 1;
                continue;
            } else {
                while (index2 < nums.length) {
                    if (nums[index2] > nums[index1]) {
                        nums[i] = nums[index2];
                        index1 += 1;
                        break;
                    }
                    index2++;
                }
            }
        }
        return index1 + 1;
    }
}

相关文章

  • LeetCode-26-删除排序数组中的重复项

    LeetCode-26-删除排序数组中的重复项 题目 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元...

  • 数组

    26 删除排序数组中的重复项 使用双指针的做法,删除排序数组中的重复项其实就是找出排序数组中的非重复项,两个指针,...

  • leecode刷题(1)-- 删除排序数组中的重复项

    leecode刷题(1)-- 删除排序数组中的重复项 删除排序数组中的重复项 给定一个排序数组,你需要在原地删除重...

  • Leetcode-26-从排序数组中删除重复项

    给定一个有序数组,你需要原地删除其中的重复内容,使每个元素只出现一次,并返回新的长度。不要另外定义一个数组,您必须...

  • LeetCode基础算法-数组

    LeetCode基础算法-数组 算法 LeetCode 数组相关 1. 从排序数组中删除重复项 描述:给定一个排序...

  • leetcode 初级算法 数组(C++)

    初级算法 数组 1.从排序数组中删除重复项 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一...

  • 数组-请你 原地 删除重复出现的元素

    数组是我们用到最多的 删除排序数组中的重复项

  • 2018-07-08

    数组 问题1. 从排序数组中删除重复项 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,...

  • 从排序数组中删除重复项

    从排序数组中删除重复项,给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的...

  • 2018年8月 leetcode刷题(初级算法数组)

    从排序数组中删除重复项 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的...

网友评论

      本文标题:Leetcode-26-从排序数组中删除重复项

      本文链接:https://www.haomeiwen.com/subject/pgpphftx.html