前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >leetcode 26 Remove Duplicates from Sorted Array

leetcode 26 Remove Duplicates from Sorted Array

作者头像
流川疯
发布2019-01-18 15:25:00
4160
发布2019-01-18 15:25:00
举报

Remove Duplicates from Sorted ArrayTotal Accepted: 66627 Total Submissions: 212739 My Submissions

Given a sorted array, remove the duplicates in place such that each element appear onlyonce 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 ofnums being 1 and 2 respectively. It doesn't matter what you leave beyond the new length

64ms好像有点慢了,这个方法有点讨巧了,绕过了算法的部分,以后还是少写这样的代码,多练习算法

我的解决方案:

代码语言:javascript
复制
class Solution {
public:
    int removeDuplicates(vector<int>& nums)
    {
        set<int> result;
        for(int i = 0;i< nums.size();i++)
        {
            result.insert(nums[i]);
        }
        nums.clear();
        set<int>::iterator iter = result.begin();
        for(;iter!=result.end();iter++)
        {
            nums.push_back(*iter);
        }
        return nums.size();
    }
};
代码语言:javascript
复制
class Solution {
public:
    int removeDuplicates(vector<int>& nums) {
        int start=1,N = nums.size();
        if(N<=1) return N;
        for(int i=1;i<nums.size();i++) {
            if(nums[i]!=nums[i-1]){
                nums[start]=nums[i];
                start++;
            }
        }
        return start;
    }
};

一行代码的STL:

代码语言:javascript
复制
class Solution { public: int removeDuplicates(int A[], int n) { return distance(A, unique(A, A+n)); } };
代码语言:javascript
复制
int removeDuplicates(vector<int>& nums) {
    if(nums.size() <= 1) return nums.size();

    vector<int>::iterator it1,it2;
    for(it1=nums.begin(),it2=nums.begin()+1; it2 != nums.end();) {
        if(*it2 == *it1) it2=nums.erase(it2);
        else {it1++;it2++;}
    }

    return nums.size();
}   

python解决方案:

代码语言:javascript
复制
class Solution:
    # @param a list of integers
    # @return an integer
    def removeDuplicates(self, A):
        if not A:
            return 0

        newTail = 0

        for i in range(1, len(A)):
            if A[i] != A[newTail]:
                newTail += 1
                A[newTail] = A[i]

        return newTail + 1
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2015年06月25日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档