[LeetCode]14. Remove Duplicates from Sorted Array排序数组去重

Given a sorted array, remove the duplicates in place such that each element appear only once and return the new length.

Do not allocate extra space for another array, you must do this in place with constant memory.

For example,
Given input array nums = [1,1,2],

Your function should return length = 2, with the first two elements of nums being 1 and 2 respectively. It doesn't matter what you leave beyond the new length.

 

解法:因为数组是排序好的,所以只需判断相邻的两个元素是否相同就可以了。如果前后两个元素相同,则前进一步继续比较,否则将此元素复制到数组第一个重复元素的位置。

class Solution {
public:
    int removeDuplicates(vector<int>& nums) {
        int n = nums.size();
        if(n == 0)
            return 0;
        int i = 1, j = 1;
        for(; i < n;)
        {
            if(nums[i - 1] == nums[i])
                i++;
            else
                nums[j++] = nums[i++];
        }
        return j;
    }
};

 若不需要in-place,则可以使用STL的map处理,或者设计Hash表处理。

posted @ 2015-10-07 17:57  AprilCheny  阅读(222)  评论(0编辑  收藏  举报