2つの配列のLeetCode 1213交差点三のソートされた配列の交差点

ここでのオリジナルタイトルリンク:https://leetcode.com/problems/intersection-of-three-sorted-arrays/

トピック:

3つの整数の配列を考えると  arr1、  arr2 そして  arr3 厳密に増加順にソート、すべての3つの配列に登場整数のみのソートされた配列を返します。

例1:

入力:ARR1 = [1,2,3,4,5]、ARR2 = [1,2,5,7,9]、ARR3 = [1,3,4,5,8]
出力:[1,5]
解説:のみ1と5は、3つの配列に登場しました。

制約:

  • 1 <= arr1.length, arr2.length, arr3.length <= 1000
  • 1 <= arr1[i], arr2[i], arr3[i] <= 2000

ソリューション:

3つのポインタが3つの配列を指しています。

3つの尖った値が同じである場合は、解像度にそれを追加し、すべての3つのポインターを移動します。

そうでなければ最初の値<第二の値は、第一ポインタを移動する場合。

他の場合に第二の値<第3の値、今最初の値でなければならない> =第二値、2番目のポインタを移動する必要があります。

他noew最初の値> =第二値と第2値> =第3の値から、第3ポインタを移動させます。

時間計算:O(n)を。N =配列の長さの合計。

スペース:O(1)。

ACのJava:

1  クラスソリューション{
 2      公共一覧<整数> arraysIntersection(INT [] ARR1、INT [] ARR2、INT [] ARR3){
 3          一覧<整数> RES = 新規のArrayList <> ();
4          もし(ARR1 == NULL || ARR2 == NULL || ARR3 == NULL ){
 5つの             リターンRES。
6          }
 7          
8          INTが I 0 = 9          int型 J = 0 ;
10          int型 K = 0 11         一方(I <J <arr2.length && K <&& arr1.length {arr3.length)
 12              であれば(ARR1 [I] == ARR2 [J] && ARR1 [I] == ARR3 [K]){
 13の                 RES。 (ARR1 [I])を加えます。
14                  I ++ ;
15                  J ++ ;
16                  K ++ 17              } そう であれば(ARR1 [I] < ARR2 [J]){
 18                  I ++ 19              } そう であれば(ARR2 [J] < ARR3 [K]){
 20                  J ++ 21             } {
 22                  K ++ 23              }
 24          }
 25の         
26          戻りRES。
27      }
 28 }

类似2つの配列の交差点

おすすめ

転載: www.cnblogs.com/Dylan-Java-NYC/p/12047372.html