説明
K番目のNアレイで最大の要素を検索します。あなたは、配列の要素を入れ替えることができます
例
例1:
Input:
k=3, [[9,3,2,4,7],[1,2,3,4,8]]
Output:
7
Explanation:
the 3rd largest element is 7
例2:
Input:
k = 2, [[9,3,2,4,8],[1,2,3,4,2]]
Output:
8
Explanation:
the 1st largest element is 9, 2nd largest element is 8, 3rd largest element is 4
各アレイは、配列を排水した後、最初の空のheapqに各アレイの最後の数字を追加し、スタックの最上位に各要素をポップし、終了ポップ後の各時間を、そうでない場合は最初の配列に対応する数位置は、デジタル数字の前面がヒープに加えました。注Pythonがデフォルトのヒープヒープの中で最小であることを、ここではデジタル数字とは反対側に毎回プッシュ賢く少し遊んで、コンパレータを書き換える方法がわかりません。各アレイの複雑さは、Sigma] nはソートされているI logN個I、N- IアレイのIの各スタックに、スタック操作Mはアレイのサイズである関数logm、複雑さはO合計時間の全てを(である、長さシグマ】N I logN個I + klogm)
コードは以下の通りであります:
輸入heapqの
クラスのソリューション:
DEF KthInArrays(自己、配列、K):
#はここにコードを記述する
場合:(配列)== 0 lenのリターン(なし)の
ために私に()でlen(配列)の範囲:配列[i]は.sort ()
のminheap = []
のために、私は中範囲(LEN(配列))
場合でlen(配列[I])> 0:heapq.heappush(のminheap、( -配列[I] [ - 1]、I、lenの(アレイ[I]) - 1 ))
のための I における範囲(K):
NUM、arrayIndex、elementIndex =heapq.heappop(のminheap)
場合 elementIndex> 0:
heapq.heappush(のminheap、( -arrays [arrayIndex] [elementIndex-1]、arrayIndex、elementIndex-1 ))
リターン(-num)