Problem: 80. 删除有序数组中的重复项 II
Reference
https://leetcode.cn/problems/remove-duplicates-from-sorted-array-ii/solutions/702644/shan-chu-pai-xu-shu-zu-zhong-de-zhong-fu-yec2/?envType=study-plan-v2&envId=top-interview-150
思路
现在大概知道这种题目的模板了。
当然我们还要根据其他情况来变化,例如上一道题26. 删除有序数组中的重复项
就要变化为nums[slow+1] = nums[fast]
。
并且return slow+1
;
不仅仅是直接使用模板也要随机,应变。
例如这道题目的保留条件就是前两个元素不与当前元素相等
复杂度
时间复杂度:
添加时间复杂度, 示例: $O(n)$
空间复杂度:
添加空间复杂度, 示例: $O(n)$
Code
[]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 26 27 28 29 30 31 32 33 34 35 36 37
| class Solution {
public:
int removeDuplicates(vector<int>& nums) {
if (nums.size() <= 2) {
return nums.size();
}
int p1 = 2;
int p2 = 2;
while (p2 < nums.size()) {
if (nums[p1 - 2] != nums[p2]) {
nums[p1] = nums[p2];
p1++;
}
p2++;
}
return p1;
}
};
|