从C ++中的Sorted Array II中删除重复项
假设我们有一个已排序的数组num,我们必须就地删除重复项,以便重复项元素最多出现两次并返回新的长度。要完成此任务,我们不能占用额外的空间。我们必须用O(1)的空间来解决这个问题。例如,如果数组类似于[0,0,0,1,1,1,1,2,3,3],则输出将为[0,0,1,1,2,3,3],它的长度是7
让我们看看步骤-
len:=2和n:=数组大小
如果n<=2,则返回n
对于我:=2到n
nums[len]:=nums[i],并将len加1
如果nums[i]!=nums[len-2]或nums[i]!=nums[len-1]
返回len
让我们看下面的实现以更好地理解-
示例
#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
int removeDuplicates(vector<int>& nums) {
int len = 2;
int n = nums.size();
if(n <= 2)return n;
for(int i = 2; i < n; i++){
if( nums[i] != nums[len - 2] || nums[i] != nums[len - 1]){
nums[len] = nums[i];
len++;
}
}
return len;
}
};
main(){
Solution ob;
vector<int> v = {0,0,0,1,1,1,1,2,3,3};
cout << ob.removeDuplicates(v);
}输入值
[0,0,0,1,1,1,1,2,3,3]
输出结果
7
热门推荐
10 朋友新年祝福语大全 简短
11 新年祝福语简短大方兔年
12 搬新家礼物祝福语简短
13 同学见面花束祝福语简短
14 五一假期祝福语幽默简短
15 离职欢送敬酒祝福语简短
16 对学弟的祝福语简短
17 考老师辞职祝福语简短
18 祝福语驱散霉运的话简短