首页 > 编程语言 > 详细

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

时间:2015-10-07 18:48:28      阅读:201      评论:0      收藏:0      [点我收藏+]

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表处理。

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

原文:http://www.cnblogs.com/aprilcheny/p/4856895.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!