leetcode-26. Remove Duplicates from Sorted Array

来源:互联网 发布:云南师范大学网络平台 编辑:程序博客网 时间:2024/05/17 06:29


解题思路:

首先考虑利用vector容器自身提供的erase方法。使用一个历史变量保存上一个浏览过的元素,当前访问元素与历史记录不同时向前移动指针否则删除指针。但这种方法效率较低。考虑换一种写法,可以不使用容器提供的方法,效率还可以更快。



解题代码一:

class Solution {public:    int removeDuplicates(vector<int>& nums) {        int len = nums.size();        if(len==0)  return 0;        int his = nums[0];        int cnt = 1;                for(auto it=nums.begin()+1;it!=nums.end();){            if(*it==his)                nums.erase(it);            else{               his = *it;               ++it;            }        }        return nums.size();    }};


解题代码二:

class Solution {public:    int removeDuplicates(vector<int>& nums) {        int len = nums.size();        if(len<2)  return len;        int ix = 1;        for(int i=1;i<len;i++){            if(nums[i]!=nums[i-1]){                nums[ix++] = nums[i];            }        }        return ix;    }};


阅读全文
0 0
原创粉丝点击