从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
以上是 从C ++中的Sorted Array II中删除重复项 的全部内容, 来源链接: utcz.com/z/316514.html