配列内のすべてのオカレンスを削除し、残りを左にシフトするにはどうすればよいですか?

user11044176

整数a1a2パラメータの2つの配列があり、すべてのa2値の出現をから削除する必要がありますa1要素は、後続のすべての要素を1インデックス左にシフトしてカバーし、最後のインデックスに0を配置することで「削除」されます。a1要素の元の相対的な順序を保持する必要があります。

要素のシフトに問題があります。

例:

int[] a1 = { 42, 3, 9, 42, 42, 0, 42, 9, 42, 42, 17, 8, 2222, 4, 9, 0, 1};

int[] a2 = { 42, 2222, 9};

最終結果は次のようになります。

{3, 0, 17, 8, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}

だからここに私のコードがあります:

for(int i = 0; i < a1.Length; i++)
{
    foreach(var element in a2)
    {
        if (element == a1[i])
        {
            for(int j = i; j < a1.Length-1; j++)
            {
                a1[j] = a1[j+1];
            }
            a1[a1.Length - 1] = 0;
        }
    }
}
カラン

あなたのi--;アイテムが一致するときに使用する必要があります。アレイ全体をシフトしているからです。また、の後にbreak;内側のforeachループを使用する必要がありますi--;

説明

1)配列を使用するi = 0、forforeach(var element in a2)両方の最初の要素はになります42したがって、最初に配列が1つのインデックスにシフトされます。使用していない場合はi--i=1どちらを使用するかをチェックします3が、すでに配列をシフトしているため、3値はインデックスにあります0したがって、この値が一致するかどうかがチェックされることはありません。

2)そして、の使用break。一致がすでに見つかり、配列がシフトされているため、さらにチェックする必要はありません。

コードは次のようになります。

for(int i = 0; i < a1.Length; i++)
{       
    foreach(var element in a2)
    {
        if (element == a1[i])
        {
            for(int j = i; j < a1.Length-1; j++)
            {
                a1[j] = a1[j+1];
            }
            a1[a1.Length - 1] = 0;
            i--;
            break;
        }
    }
}

Linqを使用できる場合は、以下のように試してください。最初にフィルター要素を取得します。次に0、残りのインデックスを追加します。

int[] a1= { 42,3,9,42,42,0,42,9,42,42,17,8,2222,4,9,0,1};
int[] a2= { 42,2222,9};
var a3 = a1.Where(x => !a2.Contains(x)).ToArray();

for (int i = 0; i < a1.Length; i++) {
    if (i < a3.Length)
        a1[i] = a3[i];
    else
        a1[i] = 0;
}

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

配列内のすべての要素を左にシフトするにはどうすればよいですか?

分類Dev

列全体で文字列内の特定の単語を保持し、残りをすべて削除するにはどうすればよいですか?

分類Dev

条件に一致する配列内のすべてのオブジェクトをカウントするにはどうすればよいですか?

分類Dev

配列内のすべての値を右にシフトして、新しい最初の値を挿入するにはどうすればよいですか?

分類Dev

フレックスコンテナの残りの幅をすべて取得するように入力するにはどうすればよいですか?

分類Dev

VS 2017でインストール解除した後、VS拡張機能の残りをすべて削除するにはどうすればよいですか?

分類Dev

javascript 配列内のオブジェクトをフィルタリングしてカウントするにはどうすればよいですか?

分類Dev

配列からすべてのリスト要素を削除するにはどうすればよいですか?

分類Dev

スプライスを使用して配列内のすべての文字列の最初の文字を削除するにはどうすればよいですか?

分類Dev

パンダのデータフレームで重複するオカレンスをすべて削除したり、一意の値を取得したりするにはどうすればよいですか?

分類Dev

カスタムリストビュー配列アダプタクラスのリストビューから行を削除し、リストビュー内の残りのアイテムを更新するにはどうすればよいですか?

分類Dev

Isabelleでサブマルチセットのすべてのオカレンスを削除するにはどうすればよいですか?

分類Dev

ディレクトリ構造を維持したまま、特定の時間より古い特定のディレクトリ内のすべてのファイルをシステムで削除するにはどうすればよいですか?

分類Dev

Titaniumを使用してAndroidでオレンジ色の境界線のオンフォーカスを削除するにはどうすればよいですか?

分類Dev

すべてのファイルの文字列から残りのファイルを削除するにはどうすればよいですか?

分類Dev

コレクション内の配列を並べ替えるにはどうすればよいですか?

分類Dev

シェル内の単語の残りの部分を削除するにはどうすればよいですか?

分類Dev

イテレーションを通じてリスト内のすべてのファイルを取得するにはどうすればよいですか?

分類Dev

どのように私はコンマは残りの部分を残して、リストを区切っからフレーズが「いいえ」とそれぞれカンマで始まる削除することができますか?

分類Dev

ページ内のすべてのリンクを選択して、カピバラの配列に保存するにはどうすればよいですか?

分類Dev

PDFファイルからすべての画像/図面を削除し、Javaのみにテキストを残すにはどうすればよいですか?

分類Dev

リスト内のすべての配列を変更しないようにコレクションからshuffle()を取得するにはどうすればよいですか?

分類Dev

ファイル内の特定のパターンまたは文字列の後の各行の残りを削除するにはどうすればよいですか?

分類Dev

オブジェクト内のすべてのフィールドが存在するかどうかが不明なときに、オブジェクト配列を介してマッピングするにはどうすればよいですか?

分類Dev

配列のすべての奇数値を負の値に変更するにはどうすればよいですか?たとえば、ファンシーインデックスを使用して1を-1にする必要がありますか?

分類Dev

配列内のすべてのオブジェクトを検証するようにjsonschemaを作成するにはどうすればよいですか?

分類Dev

配列内のすべての要素をカウントし、すべてのアイテムのキー/値オブジェクトを作成するにはどうすればよいですか?

分類Dev

PHP 配列のサービスを除いて、ネストされたナビゲーションをすべてのトップレベルのリスト項目から削除するにはどうすればよいですか?

分類Dev

bashを使用してディレクトリ内のすべてのフォルダを削除するにはどうすればよいですか?

Related 関連記事

  1. 1

    配列内のすべての要素を左にシフトするにはどうすればよいですか?

  2. 2

    列全体で文字列内の特定の単語を保持し、残りをすべて削除するにはどうすればよいですか?

  3. 3

    条件に一致する配列内のすべてのオブジェクトをカウントするにはどうすればよいですか?

  4. 4

    配列内のすべての値を右にシフトして、新しい最初の値を挿入するにはどうすればよいですか?

  5. 5

    フレックスコンテナの残りの幅をすべて取得するように入力するにはどうすればよいですか?

  6. 6

    VS 2017でインストール解除した後、VS拡張機能の残りをすべて削除するにはどうすればよいですか?

  7. 7

    javascript 配列内のオブジェクトをフィルタリングしてカウントするにはどうすればよいですか?

  8. 8

    配列からすべてのリスト要素を削除するにはどうすればよいですか?

  9. 9

    スプライスを使用して配列内のすべての文字列の最初の文字を削除するにはどうすればよいですか?

  10. 10

    パンダのデータフレームで重複するオカレンスをすべて削除したり、一意の値を取得したりするにはどうすればよいですか?

  11. 11

    カスタムリストビュー配列アダプタクラスのリストビューから行を削除し、リストビュー内の残りのアイテムを更新するにはどうすればよいですか?

  12. 12

    Isabelleでサブマルチセットのすべてのオカレンスを削除するにはどうすればよいですか?

  13. 13

    ディレクトリ構造を維持したまま、特定の時間より古い特定のディレクトリ内のすべてのファイルをシステムで削除するにはどうすればよいですか?

  14. 14

    Titaniumを使用してAndroidでオレンジ色の境界線のオンフォーカスを削除するにはどうすればよいですか?

  15. 15

    すべてのファイルの文字列から残りのファイルを削除するにはどうすればよいですか?

  16. 16

    コレクション内の配列を並べ替えるにはどうすればよいですか?

  17. 17

    シェル内の単語の残りの部分を削除するにはどうすればよいですか?

  18. 18

    イテレーションを通じてリスト内のすべてのファイルを取得するにはどうすればよいですか?

  19. 19

    どのように私はコンマは残りの部分を残して、リストを区切っからフレーズが「いいえ」とそれぞれカンマで始まる削除することができますか?

  20. 20

    ページ内のすべてのリンクを選択して、カピバラの配列に保存するにはどうすればよいですか?

  21. 21

    PDFファイルからすべての画像/図面を削除し、Javaのみにテキストを残すにはどうすればよいですか?

  22. 22

    リスト内のすべての配列を変更しないようにコレクションからshuffle()を取得するにはどうすればよいですか?

  23. 23

    ファイル内の特定のパターンまたは文字列の後の各行の残りを削除するにはどうすればよいですか?

  24. 24

    オブジェクト内のすべてのフィールドが存在するかどうかが不明なときに、オブジェクト配列を介してマッピングするにはどうすればよいですか?

  25. 25

    配列のすべての奇数値を負の値に変更するにはどうすればよいですか?たとえば、ファンシーインデックスを使用して1を-1にする必要がありますか?

  26. 26

    配列内のすべてのオブジェクトを検証するようにjsonschemaを作成するにはどうすればよいですか?

  27. 27

    配列内のすべての要素をカウントし、すべてのアイテムのキー/値オブジェクトを作成するにはどうすればよいですか?

  28. 28

    PHP 配列のサービスを除いて、ネストされたナビゲーションをすべてのトップレベルのリスト項目から削除するにはどうすればよいですか?

  29. 29

    bashを使用してディレクトリ内のすべてのフォルダを削除するにはどうすればよいですか?

ホットタグ

アーカイブ