您的位置:首页 > 其它

【leetcode】26. Remove Duplicates from Sorted Array

2016-06-06 15:44 337 查看
/**
* 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.
*/
#include <iostream>
#include <string>
#include <vector>
using namespace std;

int removeDuplicates(vector<int>& nums)
{
if (nums.empty()) return 0;

int counter = 0;
int val = nums.front();
int len = nums.size();

vector<int>::iterator it = nums.begin();
for (++it; it != nums.end(); )
{
if (*it == val)
{
counter++;
it = nums.erase(it);
}

if (*it != val)
{
val = *it;
it++;
}
}
return len - counter;
}

//leetcode想法
int removeDuplicates1(vector<int>& nums)
{
int i = 0;
for (int n : nums)
if (!i || n > nums[i - 1])
nums[i++] = n;
return i;
}

int main_l26()
{

vector<int> nums{1, 1, 1, 2, 2, 2, 3};
cout << removeDuplicates(nums);

system("pause");
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode