1 「」」 2 メディアンリスト整数順序付きの中央値であり、リストのサイズが偶数の場合、中央値がないだから中央値は、2つの中央値の平均である。。。 3つの 実施例: 4 [2、 3,4]、中央値は3である 5 [2,3]、中央値は(2 + 3)/ 2 = 2.5 6 アレイNUMS与えられるが、非常にの左から移動してサイズkのスライディングウインドウがあります非常に右に配列。あなただけのウィンドウにk個の数字を見ることができます。たびに右のいずれかの位置によって、スライディングウィンドウを移動します。あなたの仕事は、出力に元の配列内の各ウィンドウの中央値の配列です。 7 たとえば、 8 所与NUMS = [1,3、-1、-3,5,3,6,7]、及びk = 3 9 中央位置ウィンドウ 10 --------------- ----- 。11 [-1。3. 1] -3-。5. 6. 7. 3. 1 12である 。1 [3 -3 -1]。5. 6. 3 -1 7 である13 。1. 3 [-1-35] -1 7. 6. 3 14 。1. 3-1 [-353] 3。7 6。 15 1. 3 -1 3 [536] 5。7。 16 1. 3 - -3。5. 1 [3 6 7]は6 。17 したがって、中央リターンスライディングウィンドウとして[1、-1、-1,3,5,6]。 18は "" " 19 " "" 20は、 スライドのサイズkに使用します窓のメディアン演算各ウィンドウ 21を ジエチルとが整然と維持するウィンドウでソート、用途が二分 22をある 位置NUMSを見つけるために[IK]要素と特定慣行吐出さ 23 インサートNUM秩序ウィンドウを確保するための正しい位置に[i]の要素、中央値計算 24 " "" 25 クラス解決法1を: 26である DEF medianSlidingWindow(セルフ、NUMS、K): 27 インポート二分 28 IF K == :0 29 リターン[] 30 勝利= (NUMS [:K])ソート 31は ANS = [] 32 のための I におけるレンジ(K、lenの(NUMS)+ 1 ): 33は、 中央値=([// K 2]勝つ+([勝ちますK - 1)// 2])/ 2.0 #が勝つパリティ長平均普遍的な 34は ans.append(中央値) 35 IF== I LEN(NUMS): 36 BREAK 37 [ #[IK]およびその後NUMS insort次いで、それを削除NUMSのインデックスを取得[I] 38は 、インデックス= bisect.bisect_left(NUMS [IKを獲得]) 39 勝利.pop(インデックス) 40 bisect.insort_left(勝つ、NUMS [I])が 41である " "" 42は L = [1,3,4,6,8] 43である X = 3 44である x_insert_point bisect.bisect_left =(L、X) 。1 45 L xの#ルックアップ、Xが存在する場合、xは不在復帰位置に挿入されるべきであるXの左の位置返し 46 リスト3に存在する、左の位置に復帰する。1 47 x_insert_point bisect.bisect_right =(L、 X)3 48 xは、xは不在復帰位置に挿入されるべきで存在する場合L xの#検索は、位置xの右を返す 49 リストに3本、位置右3に戻ります 50 x_insort_left bisect.insort_left =(L、Xを)[1、3、3、4、6、8] 51 #xはXが存在しないX正しい位置に挿入されている左側に存在するリストLに挿入された 52である x_insort_rigth bisect.insort_right =(L、X) [1、3、3、3、4、6、8] 53 #xはXが存在しないXが正しい位置に挿入されている右側に存在する場合、リストLに挿入された 54である " "" 55 リターンANS 56は 57です " "" 58 [1,3、-1、-3,5,3,6,7] 59 。3 60 の出力 61である [1.00000、-1.00000、-1.00000,3.00000,5.00000] 62である 期待 63のIS [1.00000、-1.00000、-1.00000,3.00000,5.00000,6.00000] 64 "" " 65 " "" 66 熟練文言パイソン 67 "" " 68 クラス対処方法2: 69 DEF medianSlidingWindow(セルフ、NUMS、K): 70 インポート二等分 71は、 ウィンドウ= :ソート([K] NUMS) 72の 中央値= [] 73である ため、B に ZIP([K:】NUMS、NUMS + [0]): #ない場合0、上述したように少なくとも1つの値に答え、図示し、タプル(a、b)は戻りファスナー 74 medians.append((ウィンドウ[K // 2] +ウィンドウ[(1-K)// 2])/ 2 。) 75 window.remove() 76 bisect.insort(ウィンドウ、B) 77 リターンメジアン