26. Remove Duplicates from Sorted Array

这种题都是双指针,一个遍历,一个记录有效长度。

一开始需要判断一下。

我一上来用while找到第一个重复的元素以便于更改,其实没必要,我们知道第1个元素无论如何也会在我们的结果中,所以从第二个直接开始遍历就行。。一开始的WHIL过程就是for loop中 nums[j] == nums[j-1]的过程。。。

Time: O(n)
Space: O(1)

public class Solution {
    public int removeDuplicates(int[] nums) {
        if (nums.length == 0) return 0;
        if (nums.length == 1) return 1;
        
        
        // 1 2 2 3 4 4 5
        // 1 1 1 3 4 4 5
        
        int i = 1;
        for (int j = 1; j < nums.length; j++) {
            if (nums[j] != nums[j-1]) {
                nums[i] = nums[j];
                i++;
            }
        }
        return i;
    }
}
posted @ 2016-11-05 03:58  哇呀呀..生气啦~  阅读(73)  评论(0)    收藏  举报