码迷,mamicode.com
首页 > 编程语言 > 详细

leetCode 26. Remove Duplicates from Sorted Array 数组

时间:2016-08-11 16:03:53      阅读:162      评论:0      收藏:0      [点我收藏+]

标签:数组

26. 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) {
        if (nums.empty() || nums.size() == 1)
            return nums.size();
        int cur = nums[0];
        int i = 0;
        while(i != nums.size() - 1 )
        {
            if(cur == nums[i+1])
            {
                nums.erase(nums.begin() + i + 1);
            }
            else
            {
                cur = nums[i+1];
                i++;
            }
        }
        return nums.size();
    }
};

如果不需要删除元素,只是统计最后的个数。则可以采用下面这个简洁的做法:

参考自:https://discuss.leetcode.com/topic/8907/share-my-clean-c-code

int count = 0;
for (int i = 1; i < n; i++){
	if (A[i] == A[i - 1]) count++;
	else A[i - count] = A[i];
}
return n - count;


其他思路:

(使用了额外的空间,本题不适用)将数组元素放入map中,然后输出map的大小。


2016-08-11 14:33:57

本文出自 “做最好的自己” 博客,请务必保留此出处http://qiaopeng688.blog.51cto.com/3572484/1836874

leetCode 26. Remove Duplicates from Sorted Array 数组

标签:数组

原文地址:http://qiaopeng688.blog.51cto.com/3572484/1836874

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!