• 2.1.1Remove Duplicates from Sorted Array


    description:
        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 A = [1,1,2],
        Your function should return length = 2, and A is now [1,2]
    
    
    
    code1:
    //time : O(n), space:O(1)
    class Solution{
        public:
            int removeDuplicates(vector<int>& nums){
                if(nums.empty()) return 0;
                int index = 0;
                for(int i = 1; i < nums.size(); i++){
                    if(nums[index] != nums[i])
                        nums[++index] = nums[i];
                }
                return index + 1;
            }
    };
    
    code2:
    class Solution{
        public:
            int removeDuplicates(vector<int>& nums){
                return distance(nums.begin(),unique(nums.begin(),nums.end()));
            }
    }
    
    
    code3:
    class Solution{
        public:
            return distance(nums.begin(),removeDuplicates(nums.begin(),nums.end(),nums.begin()));
    }
    
    template<typename InIt, typename OutIt>
    OutIt removeDuplicates(InIt first, InIt last, OutIt output){
        while(first != last){
            *output++ = *first;
            first = upper_bound(first,last,*first);
        }
        return Output;
    }
    怕什么真理无穷,进一寸有一寸的欢喜。---胡适
  • 相关阅读:
    后缀自动机在复习
    冬令营模拟day2总结
    割点(模板)
    黑匣子
    挤牛奶
    上白泽慧音
    lca最小公共祖先祖先
    最小花费
    牛的旅行(标程)
    骑马修栅栏
  • 原文地址:https://www.cnblogs.com/hujianglang/p/11385531.html
Copyright © 2020-2023  润新知