26. Remove Duplicates from Sorted Array

来源:互联网 发布:网络营销策划发展状况 编辑:程序博客网 时间:2024/05/16 07:18

题目

给定一个已排序的数组,删除数组中重复的元素,使得每个元素只出现一次,并返回新数组的长度。

注意:不要申请额外的空间。

Example

给定数组 nums = [1,1,2],你的函数应该返回length = 2,其中,第一个元素为1,第2个元素为2。

解答思路

本题的难点在于不能申请额外的空间,所以,空间复杂度要求为O(1)。因此,我们就在原数组上进行操作。遍历数组,如果当前元素和前一个元素相等,则遍历下一个元素,反之,把当前的元素保留。

下面则是该思路的Java程序:

    public int removeDuplicates(int[] nums) {       if(nums.length == 0 || nums == null)            return 0;        int len = 0;        for(int i = 1;i < nums.length;i++)        {            if(nums[i] != num[len]){                len++;                nums[len] = nums[i];            }        }        return len+1;    }

由程序可以看出,该算法的时间复杂度最大为O(n),空间复杂度为O(1)

原创粉丝点击