Remove Duplicates from Sorted Array

来源:互联网 发布:ps制作淘宝详情页尺寸 编辑:程序博客网 时间:2024/06/06 14:13

这里写图片描述


1 shift

每次发现有前后两个数是一样的就将后面的数全部往前shift一位,然后len 减一。

public class Solution {    public int removeDuplicates(int[] nums) {        int len = nums.length;        for (int i = 1; i < len; i++) {            if (nums[i - 1] == nums[i]) {                for (int j = i; j < len; j++) {                    nums[j - 1] = nums[j];                }                len--;                i--;            }        }        return len;    }}

虽然上面的算法可以被Accepted,但是在效率上明显是很低的:O(N^2)。



2 往前排

要注意到这道题有提到,这是一个排序了的数组,而上面的算法完全没有利用这个特性。我们只需将unique的数往前一个个排即可。一个指针记录当前的位置,一个指针去往后遍历需找新的值。

public class Solution {    public int removeDuplicates(int[] nums) {        if(nums.length == 0){            return 0;        }        int start = 0;        int key = nums[0];        for(int i = 0; i<nums.length; i++){            if(nums[i] != key){                nums[++start] = nums[i];                key = nums[i];            }        }        return start+1;    }}
0 0
原创粉丝点击