题目:从已排序的数组中去除重复数字,非重复数字放在数组前部,返回非重复数字的长度。数组剩余的部分放什么不管。
思路:见代码中。主要是设置两个下标,一个是标记已去重的部分,一个标记待处理的位置。
注意:去重,很自然想到要先排序一下,发现已经是sorted的了
代码:
class Solution { public: int removeDuplicates(vector<int>& nums) { if(nums.size()==0) return 0;//下面直接是从下标1开始比较的,所以需要单独判断数组为空的情况 int lenxb=0;//长度的下标,即长度=lenxb+1 for(int i=1;i<nums.size();++i) { if(nums[i]!=nums[lenxb]) nums[++lenxb]=nums[i]; } //思想:相当于设置两个下标,lenxb指向已处理的数组边界,i指向数组待处理的位置 return lenxb+1; } };