标签:www duplicate 复杂 ted tco span 数字 生成 dup
两个题类似,第一个题是不允许有重复的数字,第二个题是允许每个数字最多重复两个,两个题目都要求在原数组上进行操作,并返回生成数组的长度,即空间复杂度为O(1)。
两个题都是使用双指针,第一个指针指向生成新的数组的最后一个位置,第二个指针指向当前进行判断的位置。
唯一不同的是, 第二个题需要设置一个变量来控制重复的个数是否超过2
26. Remove Duplicates from Sorted Array
class Solution { public: int removeDuplicates(vector<int>& nums) { if(nums.empty()) return 0; int pre = 0; int cur = 0; while(cur < nums.size()){ if(nums[pre] == nums[cur]) cur++; else nums[++pre] = nums[cur++]; } return pre + 1; } };
80. Remove Duplicates from Sorted Array II
class Solution { public: int removeDuplicates(vector<int>& nums) { if(nums.empty()) return 0; int pre = 0; int cur = 1; int count = 1; while(cur < nums.size()){ if(nums[pre] == nums[cur]){ if(count == 0) cur++; else{ nums[++pre] = nums[cur++]; count--; } } else{ nums[++pre] = nums[cur++]; count = 1; } } return pre + 1; } };
http://www.cnblogs.com/grandyang/p/4329295.html
leetcode 26. Remove Duplicates from Sorted Array 、80. Remove Duplicates from Sorted Array II
标签:www duplicate 复杂 ted tco span 数字 生成 dup
原文地址:https://www.cnblogs.com/ymjyqsx/p/10729373.html