1. 程式人生 > >LeetCode——移除元素

LeetCode——移除元素

雙指標法: 

int removeElement(vector<int>& nums, int val) {
        auto p1_head = nums.begin();
        auto p2_head = p1_head;
        
        for(; p1_head != nums.end(); ++p1_head)
        {
            if(*p1_head != val)
            {
                *p2_head = *p1_head; 
                ++p2_head;
            }
        }
        return p2_head - nums.begin();
}

當要刪除的元素很少時:

 int removeElement(vector<int>& nums, int val) {
        auto p1_head = nums.begin();
        vector<int> :: size_type count = 0;
        
        while(p1_head < nums.end() - count)
        {
            if(*p1_head == val)
            {
                *p1_head = *(nums.end() - count - 1);
                count++;
            }
            else ++p1_head;
            
        }
        return nums.end() - count- nums.begin();