题目链接:26.删除排序数组中的重复项
题解:
嗯,简单题。
题目简述:
删除有序数组长度重复项,返回不重复元素的长度!
题解:
用两个指针一个指针t
指向不重复元素的末尾,一个指针i
指向当前扫描的位置,如果当前扫描位置和不重复元素的末尾相同,则继续后移,找到不一样的插到不重复元素的下一个位置。
最后返回长度,此处t
指向下标,长度为t + 1
.
注意:这样写需要特判nums
为空的情况!
AC代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| class Solution { public: int removeDuplicates(vector<int>& nums) { if(nums.size() == 0) return 0; int t = 0; for(int i = 0; i < nums.size();){ while(i < nums.size() && nums[i] == nums[t]) i++; if(i < nums.size()) nums[++t] = nums[i]; } return t + 1; } };
class Solution { public: int removeDuplicates(vector<int>& nums) { if(nums.size() == 0) return 0; int t = 0; for(int i = 0; i < nums.size(); i++) if(nums[i] != nums[t]) nums[++t] = nums[i]; return t + 1; } };
|