从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

    回到顶部