C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C++でソートされた配列IIから重複を削除する


ソートされた配列numがあるとすると、重複要素が最大2回表示され、新しい長さを返すように、重複をインプレースで削除する必要があります。このタスクを実行するために、余分なスペースを取ることはできません。これは、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を返します
  • for i:=2からn
    • if nums [i]!=nums[len-2]またはnums[i]!=nums [len-1]
      • nums [len]:=nums [i]、lenを1増やします
  • return 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

  1. 配列リストから重複を削除するJavaプログラム

    この記事では、配列リストから重複を削除する方法を理解します。リストは、要素を順番に保存してアクセスできるようにする順序付けられたコレクションです。これには、要素を挿入、更新、削除、および検索するためのインデックスベースのメソッドが含まれています。重複する要素を持つこともできます。 以下は同じのデモンストレーションです- 入力がであると仮定します − The list is defined as: [Java, Scala, Python, Java] 必要な出力は − The list after removing the duplicates: [Java, Scala, Pyth

  2. Pythonで並べ替えられた配列から重複を削除する

    ソートされたリストAがあるとします。重複するすべてのエントリを削除した後、配列の長さを返す必要があります。これは、O(1)の余分なスペースで実行する必要があります。そのため、その場で操作を行う必要があります。 たとえば、A =[1、1、2、2、2、3、3、3、3、4、5、5、5、6]とすると、6つの異なる要素があるため、出力は6になります。 これを解決するには、次の手順に従います- リストが空の場合は、0を返します それ以外の場合は、最初にprev=Aの最初の要素を取得します。長さ=0を定義します for i:=1からn-1、do A [i]がprevと同じでない場合、 長さ:=