インタビューleetcodeの分割統治 - X冪等、すべての番号を見つけます

xの関数を計算する1 leetcode50 n乗。

達成  POW(X、  N  、すなわち、xのn乗の関数です。

(1)ライブラリ関数呼び出し

(2)激しいO(N)

(3)分治

XXXXXX ....... Xフォルダ両端を有し、さらに、Y = X Nの三分の二の電力結果= Y * yの場合です。それが奇数である場合、xのn乗の、三分の二、結果= Y * Y * X

X(N) - > X(N / 2) - > X(N / 4)... X(0)各半分、LOGN

1  クラス溶液(オブジェクト):
 2      DEF MYPOW(自己、X、N):
 3          "" "
 4          :タイプX:フロート
5          :タイプN:INT 
6          :RTYPE:フロート
7          """
 8          ならないN:
 9              リターン 1 
10          であれば、N < 0 11              リターン 1 / self.myPow(X、 - N)
 12          であれば、n個の%2 13              リターン X * self.myPow(N-X、1 14         リターン self.myPow(X *、X、N / 2
コードの表示

非再帰

1  クラス溶液(オブジェクト):
 2      DEF MYPOW(自己、X、N):
 3          ""」
 4          :タイプX:フロート
5          :タイプN:INT 
6          :RTYPE:フロート
7          
8          もしNではない:
 9              リターン 1 
10          もし N < 0 11              リターン 1 / self.myPow(X、 - N)
 12          であれば、N%2 13              リターン X * self.myPow(X、N- 1 14          リターンself.myPow(X *、X、N / 2 15          ""」
 16          もし N < 0 17              、X = 1 / X
 18              N = - N
 19          POW = 1 
20          ながら、N:
 21              であれば、N&1 22                  POW * = X
 23              、X * = X
 24              N >> = 1件の
25          戻り POW
コードの表示

 

モードを求めて2 leetcode169

暴力の(1)は、2つのサイクルが、時間複雑さnの正方形、xのそれぞれに対してカウントされ

(2)マップ、要素のキー、カウント値

C ++ 0(N)の時間複雑さのバージョン毎サイクルMAPO(1)回

1  クラスソリューション{
 2  公共3      INT majorityElement(ベクトル< INT >&NUMS){
 4          unordered_map < INTINT > ハッシュ。
5          INT RES = 0 6          INT LEN = nums.size()。
7          ためのINTは iは= 0 ; I <LEN; I ++ 8          {
 9              ハッシュ[NUMS [I]] ++ ;
10              であれば(ハッシュ[NUMS [I]]> LEN / 2 11             {
 12の                  RES = NUMS [I]。
13              }
 14          }
 15の         リターンRES。
16      }
 17 }。
コードの表示

(3)黒nlogn

(4)分治

最初の2つの部分は、左右が==左場合は右、そして全体的な結果は右/左され、okです。等しくない場合には、比較的大きなカウント方

1  DEF majorityElement(自己、NUMS):
 2      ならないNUMS:
 3          リターンなし
 4      もし lenを(NUMS)== 1 5          リターン NUMS [ 0 ]
 6      A = self.majorityElement(NUMS [:lenは(NUMS)// 2 ])
7      、B = self.majorityElement(NUMS [lenは(NUMS)// 2:])
8      もし ==のB:
 9          リターン10 リターン [B、A] [nums.count()> LEN(NUMS)// 2]     
コードの表示

 

おすすめ

転載: www.cnblogs.com/lanjianhappy/p/11828256.html