力扣480 滑動視窗的中位數 python

2021-10-19 02:42:19 字數 690 閱讀 1263

我們採用陣列二分查詢演算法,利用bisect包8.6. bisect — 陣列二分查詢演算法¶

,我們先建立第乙個陣列,然後刪除乙個,新增乙個依次繼續

import bisect

class

solution

:def

medianslidingwindow

(self, nums: list[

int]

, k:

int)

-> list[

float]:

#我們利用函式得到我們需要的中位數的位置

median =

lambda a:

(a[(

len(a)-1

)//2]

+ a[

len(a)//2

])/2

a =sorted

(nums[

:k])

res =

[median(a)

]for i, j in

zip(nums[

:-k]

, nums[k:])

: a.remove(i)

a.insert(bisect.bisect_left(a, j)

, j)

)return res

力扣 480 滑動視窗中位數 劃分樹 Treap

思路一 需要一種可以快速求出區間第k kk大的資料結構,那麼主席樹 tre aptreap trea p等都滿足題意,這裡我用了劃分樹,他也可以求出區間第k kk大,不過不支援動態修改,詳見我這篇部落格。class dividetree void build int depth,int l,int ...

480 滑動視窗中位數

題目描述 中位數是有序序列最中間的那個數。如果序列的大小是偶數,則沒有最中間的數 此時中位數是最中間的兩個數的平均數。例如 2,3,4 中位數是 3 2,3 中位數是 2 3 2 2.5 給你乙個陣列 nums,有乙個大小為 k 的視窗從最左端滑動到最右端。視窗中有 k 個數,每次視窗向右移動 1 ...

480 滑動視窗中位數

中位數是有序序列最中間的那個數。如果序列的長度是偶數,則沒有最中間的數 此時中位數是最中間的兩個數的平均數。例如 2,3,4 中位數是 3 2,3 中位數是 2 3 2 2.5 給你乙個陣列 nums,有乙個長度為 k 的視窗從最左端滑動到最右端。視窗中有 k 個數,每次視窗向右移動 1 位。你的任...