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

ソートされた配列から重複を削除し、C#を使用して重複していない配列を返す方法は?


配列はすでにソートされているので、2つのポインターiiとjjを保持できます。ここで、iiは低速ランナーで、jjは高速ランナーです。 nums [i] =nums [j] nums [i] =nums [j]である限り、jjをインクリメントして重複をスキップします。

nums [j]!=nums [i]に遭遇すると、重複実行が終了したため、その値をnums [i + 1] nums [i+1]にコピーする必要があります。次にiiがインクリメントされ、jjが配列の最後に到達するまで同じプロセスを繰り返します。新しい配列を作成し、フィルター処理された配列からインデックスまですべての要素をコピーして、新しい配列を返します。

時間計算量-O(N)

using System;
namespace ConsoleApplication{
   public class Arrays{
      public int[] RemoveDuplicatesFromSortedArrayAndReturnArray(int[] arr){
         int index = 1;
         for (int i = 0; i < arr.Length - 1; i++){
            if (arr[i] != arr[i + 1]){
               arr[index] = arr[i + 1];
               index++;
            }
            else{
               continue;
            }
         }
         int[] newarr = new int[index];
         for (int i = 0; i < index; i++){
            newarr[i] = arr[i];
         }
         return newarr;
      }
   }
   class Program{
      static void Main(string[] args){
         Arrays a = new Arrays();
         int[] arr = { 0, 0, 1, 1, 1, 2, 2, 3, 3, 4 };
         int[] res = a.RemoveDuplicatesFromSortedArrayAndReturnArray(arr);
         for (int i = 0; i < res.Length; i++){
            Console.WriteLine(res[i]);
         }
         Console.ReadLine();
      }
   }
}

出力

0 1 2 3 4

  1. Androidでソートされたリンクリストから重複を削除するにはどうすればよいですか?

    この例は、Androidでソートされたリンクリストから重複を削除する方法について示しています。 ステップ1 − Android Studioで新しいプロジェクトを作成し、[ファイル]⇒[新しいプロジェクト]に移動して、新しいプロジェクトを作成するために必要なすべての詳細を入力します。 ステップ2 −次のコードをres / layout/activity_main.xmlに追加します。 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="ht

  2. バックアップから重複を検出して削除する方法

    コンピューターまたは電話のストレージが不足している場合は、使用頻度の低いファイルを別のドライブに転送します。コンピューターには、外付けハードディスク ドライブと USB フラッシュ ドライブを使用します。最近、クラウド ストレージを使用してデータをバックアップする最も一般的な方法があります。しかし、バックアップも整理する必要があると思いますか?そうしないと、不必要にいっぱいになる傾向があり、すべてのドライブのストレージが不足します。バックアップに関しては、軽率な決定を下し、ジャンクや重複がないかどうかを検査せずにすべてのファイルを移動する傾向があります。 この投稿では、重複を検出してバックア