2 3 力扣 滑動視窗中位數

2021-10-18 22:56:29 字數 1212 閱讀 4184

如題:他這是為難我胖虎!

中位數是有序序列最中間的那個數。如果序列的長度是偶數,則沒有最中間的數;此時中位數是最中間的兩個數的平均數。

例如:

給你乙個陣列 nums,有乙個長度為 k 的視窗從最左端滑動到最右端。視窗中有 k 個數,每次視窗向右移動 1 位。你的任務是找出每次視窗移動後得到的新視窗中元素的中位數,並輸出由它們組成的陣列。

並查集我唯唯諾諾,滑動窗**唯唯諾諾。

/*

* note: the returned array must be malloced, assume caller calls free().

*/double g_queuenum[

10000];

int g_total;

int g_index;

int g_k;

double

queue()

// 只插入乙個值,不知道是在前面還是後面,所以需要前後冒一遍泡

}for

(int i = g_k-

1; i>

0; i--

)//氣泡排序}if

(g_k %2==

0)else

}int

pop(

double number)

//二分查詢刪除元素

else

if(g_queuenum[mid]

< number)

else

}return0;

}int

push

(double number)

double

*medianslidingwindow

(int

* nums,

int numssize,

int k,

int* returnsize)

for(

int i =

0; i1; i++)}

} g_total =0;

for(

int i = k; i ) totalnum[g_total++]=

queue()

;//最後乙個值

*returnsize = g_total;

return totalnum;

}

滑動視窗中位數

中位數是有序序列最中間的那個數。如果序列的長度是偶數,則沒有最中間的數 此時中位數是最中間的兩個數的平均數。例如 給你乙個陣列 nums,有乙個長度為 k 的視窗從最左端滑動到最右端。視窗中有 k 個數,每次視窗向右移動 1 位。你的任務是找出每次視窗移動後得到的新視窗中元素的中位數,並輸出由它們組...

力扣 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 ...