安全オファー51を証明するために、

1# - * -コーディング:UTF- 8 - * -
 2  クラスのソリューション:
 3      DEF __init __(自己):
 4          self.cnt = 0 
5          self.tmp = []
 6          
7      DEF InversePairs(自己、データ):
 8          、N = LEN(データ)
 9          self.tmp = [ 0 ] * N
 10          self.mergeSort(データ、0、N- 1 11          リターン self.cnt%の十億七
12          
13      DEFマージ(自己、NUMS、L、H):
 14          もしH - L < 1 15              リターン
16          のm = 1 +(H - L)// 2 
17          self.mergeSort(NUMS、L、M)
 18          self.mergeSort(NUMS、M + 1 、H)
 19          self.merge(NUMS 、L、M、H)
 20          
21      DEF(自己、NUMS、L、M、H)マージ:
 22          I、J、K = L、M + 1 、L
 23          、一方 I <= MまたはJ <=はH:
 24              もし I> M:
 25                  self.tmp [K] = NUMS [j]が
 26                  J + = 1 
27             ELIF J> H:
 28                  self.tmp [K] = NUMS [I]
 29                  I + = 1 
30              ELIFのNUMS [I] <= NUMS [J]:
 31                  self.tmp [K] = NUMS [I]
 32                  iは+ = 1 
33              34                  self.tmp [K] = NUMS [j]が
 35                  J + = 1 
36                  self.cnt + = M - I + 1 
37              K + = 1 
38          K = L
 39          ながら <= KH:
 40              NUMS [K] = self.tmp [K]
 41              K + = 1 
42          ここで#ライトコード

この質問のタイムアウトは、OJはPythonの問題の判断であると言われています。

 

以下は、Java実装の参照がに提出することができます:

1つの パブリック クラスソリューション{
 2      プライベート ロング CNT = 0 ;
 3      プライベート INT [] TMP;   // ここで宣言補助アレイの代わりにステートメントマージ()再帰関数
4。 
5。     公共 INT InversePairs(INT [] NUMS){
 6。          = TMP 新しい新しい INT [nums.length];
 7。          マージ(NUMS、0、nums.length - 1。);
 8。         リターンINT)(%CNT 十億七);
 9。     }
 10 
11      プライベート ボイドマージ(INT [] NUMS、int型の L、int型H){
 12          であれば(H - L < 1 13              リターン;
14          int型 M = 1 +(H - L)/ 2 15          マージ(NUMS、L、M)。
16          マージ(NUMS、M + 1 、H)。
17          マージ(NUMS、L、M、H)。
18      }
 19  
20      プライベート ボイドマージ(INT [] NUMS、int型の L、INT M、INTH){
 21          INT I = 1、J = M + 1、K = L。
22          一方(I <= M || J <= H){
 23              であれば(I> M)
 24                  TMP [K] = NUMS [J ++ ]。
25              他の 場合(J> H)
 26                  [I ++ TMP [K] = NUMS ]。
27              他の 場合(NUMS [I] <= NUMS [J])
 28                  TMP [K] = NUMS [I ++ ]。
29              {
 30                  TMP [K] = NUMS [J ++ ]。
31                  .CNT + = M - I + 1// NUMS [I]> NUMS [J]、说明NUMS [I ...中間]都大于NUMS [J] 
32          }
 33          K ++ 34      }
 35      (K = L; K <= hの; kは++ 36          NUMS [k]は= TMP [k]を、
37      }
 38 }

 

おすすめ

転載: www.cnblogs.com/asenyang/p/11023306.html