leetcode_remove_duplicates_from_sorted_array

难度:Easy
解题思路:设置两个迭代器,用其中一个迭代器遍历数组,另一个迭代器保证其之前的部分元素不重复。为了保证部分元素不重复,需要进行元素交换。
代码如下。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class Solution {
public:
int removeDuplicates(vector<int>& nums) {
if(nums.size() <= 1) return nums.size();
auto solved_it = nums.begin();
auto unsolved_it = solved_it + 1;
auto end_it = nums.end();
while(unsolved_it != end_it)
{
if (*unsolved_it != *solved_it )
{
swap(*unsolved_it, *(solved_it+1));
unsolved_it++;
solved_it++;
}
else
{
unsolved_it++;
}
}
return solved_it-nums.begin()+1;
}
};

提交结果:25 ms,超过88.10%。