美文网首页
26. 删除排序数组中的重复项

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

作者: justonemoretry | 来源:发表于2020-06-21 23:27 被阅读0次

    自己解法

    这个题其实就是保存下当前重复的元素,和数组填充的不重复下标,然后遍历,遇到不重复的就重新记录和保存就好了,时间复杂度为O(N),空间复杂度为O(1)。

    class Solution {

        public int removeDuplicates(int[] nums) {

            if (nums.length == 0 || nums.length == 1) {

                return nums.length;

            }

            int temp = nums[0];

            int j = 0;

            for (int i = 1; i < nums.length; i++) {    

                if (nums[i] != temp) {

                    temp = nums[i];

                    nums[++j] = temp;

                }

            }

            return j + 1;

        }

    }

    官方解法

    官方解法和自己解法类似,少了一个temp变量,直接用nums[i]来代替

    public int removeDuplicates(int[] nums) {

        if (nums.length == 0) return 0;

        int i = 0;

        for (int j = 1; j < nums.length; j++) {

            if (nums[j] != nums[i]) {

                i++;

                nums[i] = nums[j];

            }

        }

        return i + 1;

    }

    相关文章

      网友评论

          本文标题:26. 删除排序数组中的重复项

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