-1

整数要素を持つ配列があります。例: (20、5、7、143、25、244、148)。要素間の差が 5 であるという条件があります。そのため、この配列の数量は 2 になります。これは、25-20 = 5 および 143-148 = であるため、20,25 と 143, 148 の 2 つのペアしかないためです。 5も。もちろん、foreach を使用して、その中で再び foreach を使用し、すべての要素の違いを比較できます。そしてそれを数えます。しかし、それには困難があります(N*N)。別の解決策を見つける必要があります。

編集。解決しました。 最初 : 初期配列のすべての要素から $difference Int を減算し、結果の値を新しい配列に設定し、その後 in_array() を使用して数量をカウントします。

4

1 に答える 1

1

ここでできるトリックの 1 つは、初期配列のすべての要素から 5 (要素間の差) を引くことです。これにより、新しい配列が得られます。

int[] initialArray = {20, 5, 7, 143, 25, 244, 148};
int[] newArray = {15, 0, 2, 138, 20, 239, 143};

アイデアを得ましたか?:) そうでない場合は、新しい配列を反復処理し、そのような要素が初期配列に存在するかどうかを確認します。これは、配列を 1 回反復し、初期配列に特定の要素が含まれているかどうかを確認するため、O(n) 複雑な操作です。 O(1) です。PHP でコーディングする場合は in_array() 関数を使用し、Java を使用する場合は配列の代わりにメソッドを含む Map を使用します。

于 2013-11-12T19:19:23.037 に答える