领扣543。N配列における最大のK番目

説明

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)

 

おすすめ

転載: www.cnblogs.com/Leisgo/p/11802920.html