【leetcode】26. Remove Duplicates from Sorted Array

来源:互联网 发布:唐诗宋词朗诵软件 编辑:程序博客网 时间:2024/06/07 01:48
/** * 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;}
0 0