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 < INT、INT > ハッシュ。 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]