2つの注文の配列の中央値を見つけるためのアルゴリズム戦闘(4)

I.はじめに

  今日は、第四質問を始めた2つの命じた配列の中央値を探してください。この問題のleetcodeの難しさをマーキングすることは困難であり、これは私おびえ見えるかもしれ、困難な主題の前に実行されませんでした。私は行く、私は一瞬のために非常に簡単タイトルが、また少し幸せを感じる。しかし、私は彼らのレベルが高くなると考えました。読み取り排水条件、あまりにも早く彼女の顔結果、複雑さのOのために必要な時間は(+ N(ログインメートル))、本当に難しいです。いくつかの単語の男は言いました。タイトルを見てください。

II。トピック

  タイトル:サイズとnums1 mとnはn​​ums2の2つの命じたアレイを考えます。

     メジアンおよび整然とした配列の両方を検索し、アルゴリズムの時間複雑さを必要としてくださいはO(ログ(M + N))です。

     あなたはnums1とnums2両方が空を負いかねます。

  実施例1:nums1 = [1、3]

       nums2 = [2]

       中央値は2.0です

  実施例2:nums1 = [1、2]

       nums2 = [3、4]

       中央値は、(2 + 3)/ 2 = 2.5であります

III。問題解決のアイデア

  タイトルは偶数の場合、中央の2つは2で割る、それはそれの真ん中で、それが奇数の場合、2つの数字の後に中央値を見つけることです、理解しやすいことを意味します。

  1)流出方法:新しいアレイの手段と、2つのアレイへの2つのポインタを使用して、ポインタの要素を比較し、新しい小さなアレイに配置され、次いでポインタ、O(M + N)の時間複雑度、コードを移動次のように:

1  クラスソリューション{
 2      公共 ダブル findMedianSortedArrays(INT [] nums1、int型{[] nums2)
 。3          // 新しい配列、2つの配列の長さの長さを作成します
。4          INT [] NUM = 新しい新しい INT [nums1.length + nums2を.LENGTH];
 5は、         // ポインタ一つは、配列へのポインタ
。6          int型のインデックス1は、= 0 ;
 7          // ポインタ2個、2点アレイ
。8          int型 INDEX2 = 0 ;
 9          INT I = 0;私はnum.lengthを<; I + + ){
 10              //二つのポインタは、ポインタ移動させる必要性に比べて、アレイの端でない場合
 11              // 直接残留、一端が新しいアレイ部分に別の配列
12である             IF(index1の、<&& nums1.length INDEX2を< nums2.length){
 13は                  NUM [I] = nums1 [index1の、<= nums2 [INDEX2] nums1 [index1の、++]:[?++ INDEX2 nums2 ];
 14              } そう  IF(index1の、< nums1.length){
 15                  NUM [I] nums1 = [index1の、++ ];
 16              } {
 17                  NUM [I] = nums2 [++ INDEX2 ];
 18である             }           
 19          }
 20          //奇数及び偶数配列に応じて、中央値を計算する
21ことである         IF(num.length%2 == 0 ){
 22で             リターンダブル)(NUM + NUM [num.length / 2] [num.length / 21です]) /(ダブル)2 ; 
 23れる          } {
 24              リターン NUM [(num.length - 1)/ 2 ];
 25          }
 26である     }
 27 }

  2)上記の試験に合格したものの、私はそれを行うために始めたということですが、((m + nはログ))Oの時間複雑に達しなかったが、第二の方法はまだ出て来てほしい、とそう後で補足していません上の、あなたのアイデアを持っているし、私も交流を共有することができれば、あなたに感謝!

おすすめ

転載: www.cnblogs.com/litterCoder/p/11391901.html