【劍指offer】41、數據流中的中位數
題目
如何得到一個數據流中的中位數?如果從數據流中讀出奇數個數值,那麽中位數就是所有數值排序之後位於中間的數值。如果從數據流中讀出偶數個數值,那麽中位數就是所有數值排序之後中間兩個數的平均值。我們使用Insert()方法讀取數據流,使用GetMedian()方法獲取當前讀取數據的中位數。
思路
用一個最大堆存儲左邊的數據容器,用一個最小堆存儲右邊的數據容器
這樣的話,可以快速得到左邊的最大值 left_max,右邊的最小值 right_min,且滿足
left_max <= right_min
【劍指offer】41、數據流中的中位數
相關推薦
【劍指offer】41、數據流中的中位數
最小 left 均值 平均值 median 最小值 一個數 nbsp 如何 題目 如何得到一個數據流中的中位數?如果從數據流中讀出奇數個數值,那麽中位數就是所有數值排序之後位於中間的數值。如果從數據流中讀出偶數個數值,那麽中位數就是所有數值排序之後中間兩個數的平均值。我們使
【劍指offer】39、數組中出現次數超過一半的數字
當前 span pan 時間 超過 例如 思路 begin 是否 題目 數組中有一個數字出現的次數超過數組長度的一半,請找出這個數字。例如輸入一個長度為9的數組{1,2,3,2,2,2,5,4,2}。由於數字2在數組中出現了5次,超過數組長度的一半,因此輸出2。如果不存在則
【劍指offer】42、連續子數組的最大和
class 分享 因此 eat 組成 連續 最大和 累加 ret 題目 輸入一個整型數組,數組裏有正數也有負數。數組的一個或連續多個整數組成一個子數組。求所有子數組的最大和。要求時間復雜度為O(n) 思路一 試著從頭到尾累加每個數字,若發現有子數組和小於零,則加上後面的數字
【劍指offer】49、醜數
一個 醜數 for 超級 class off 指針 number pub 題目 把只包含質因子2、3和5的數稱作醜數(Ugly Number)。例如6、8都是醜數,但14不是,因為它包含質因子7。 習慣上我們把1當做是第一個醜數。求按從小到大的順序的第N個醜數。 思路 顯然
【劍指Offer】6、旋轉數組的最小數字
length num 旋轉 是的 一次 排序數組 ray 技術 處理 ??題目描述: ??把一個數組最開始的若幹個元素搬到數組的末尾,我們稱之為數組的旋轉。 輸入一個非減排序的數組的一個旋轉,輸出旋轉數組的最小元素。 例如數組{3,4,5,1,2}為{1,2,3,4,5}的
【劍指Offer】33、醜數
ply 如何 如果 浪費時間 實現 習慣 描述 如果能 turn ??題目描述: ??把只包含質因子2、3和5的數稱作醜數(Ugly Number)。例如6、8都是醜數,但14不是,因為它包含質因子7。 習慣上我們把1當做是第一個醜數。求按從小到大的順序的第N個醜數。 ??
【劍指offer】7、重建二叉樹
nbsp treenode truct 遞歸函數 tar end || 部分 遍歷 題目 給出二叉樹的前序遍歷與中序遍歷結果,重建該二叉樹。 思路 由於前序遍歷的第一個數字是根節點,將中序遍歷分為左右子樹兩個部分。接下來就遞歸,將左子樹和右子樹的序列分離出來,然後調用遞歸函
【劍指offer】8、二叉樹中序遍歷的下一個節點
pan color col amp nullptr nbsp 父節點 public turn 題目 給定一個二叉樹和其中一個節點,找出中序遍歷的下一個節點。註意:樹的節點中除了有指向左右節點的指針,還有指向父節點的指針。 思路 (1)若該節點Node有右子樹,則下一個節點就
【劍指offer】9、用兩個棧實現隊列
題目 壓入 () ack 用兩個棧 nbsp del emp span 題目 用兩個棧實現隊列。隊列聲明如下,實現appendTail和deleteHead,分別完成在隊列尾部插入節點,和頭部刪除節點的功能。 思路 尾部插入:直接向stack1壓入即可 頭部刪除:先進先出,
【劍指offer】16、數值的整數次方
urn bsp unsigned info 直接 signed http 指數 ret 題目 實現double Power(double base, int exponent),求base的exponent次方,不得使用庫函數,同樣需要考慮大數問題。 思路 題目意思很清楚,
【劍指offer】17、打印從1到最大的n位數
++ lse style ret char bsp 大數問題 要求 dig 題目 輸入數字n,按順序打印從1到最大n位的十進制數。比如輸入3,打印1到999。 思路 輸入的數字可以很大,可以是33,65,這樣的話int和long long都不能滿足題目要求,所以這是一個大數
【劍指offer】18、刪除鏈表的(重復)節點
ica 這也 思路 遍歷 排序 時間 劍指offer 復雜度 例如 題目一 在O(1)時間內刪除鏈表節點,已知刪除節點的指針。 思路 關鍵是已知刪除節點的指針,則可以將下一個節點復制到當前節點,再將當前節點指向下下個節點。 這樣相當於用到的是 當前節點、下個節點、下下個節點
【劍指offer】19、正則表達式匹配 && 【Leetcode】44、Wildcard Matching
cto bstr length 就是 let image substring tco ive 題目一 請實現一個函數用來匹配包括‘.‘和‘*‘的正則表達式。模式中的字符‘.‘表示任意一個字符,而‘*‘表示它前面的字符可以出現任意次(包含0次)。 在本題中,匹配是指字符串的
【劍指offer】43、1~n整數中1出現的次數
ase 表示 eight pre pub 題目 我們 return 1出現的次數 題目 輸入一個整數,求1~n的整數十進制表示中1出現的次數。如12,有1,10,11,12,總共出現了5次。 思路 註意不是統計出現1的數字的多少,而是統計1出現了幾次。 我們按位來分析 個位
【劍指offer】58、翻轉字符串
rst ring 前閉後開 輸入 是把 叠代器 oid swa front 題目一 輸入英文句子,翻轉句子中單詞的順序,但單詞內字符順序不變,標點當作普通字母處理。 如I am a student. 輸出student a am i 思路 第一步翻轉整個句子,.tnedu
【劍指offer】59、隊列的最大值(不熟)
最大值 ber 元素 const 所有 刪除元素 windows 窗口 push_back 題目一 給定一個數組和滑動窗口的大小,請找出所有滑動窗口裏的最大值。例如,{2,3,4,2,6,2,5,1}以及窗口大小3,那麽存在6個滑動窗口,最大值分別為{4,4,6,6,6,5
【劍指offer】62、圓圈中最後剩下的數字
== str rem 過程 開始 continue 最後一個元素 last main 題目 0~n-1這n個數字排成一個圓圈,從0開始,每次刪除第m個數字,求出圓圈裏剩下的最後一個數字 思路 直接用數組模擬圓圈,模擬刪除的過程 class Solution { publi
【劍指offer】61、撲克牌中的順子
一個 nbsp sort int con turn 判斷 個數 是否 題目 從撲克牌中隨機抽5張牌,判斷是不是一個順子。2~10為本身,A是1,J,Q,K分別是11,12,13。大小王百搭 思路 關鍵就是大小王百搭。把大小王都當作0。 我們先統計出數組中0的個數 然後將數組
【劍指Offer】33醜數
題目描述 把只包含質因子2、3和5的數稱作醜數(Ugly Number)。例如6、8都是醜數,但14不是,因為它包含質因子7。 習慣上我們把1當做是第一個醜數。求按從小到大的順序的第N個醜數。 時間限制:1秒;空間限制:32768K;本題知識點:陣列 解題思路 用迴圈
【劍指offer】41-50題
41.輸出所有和為S的連續正數序列。序列內按照從小至大的順序,序列間按照開始數字從小到大的順序 思路:定義兩個指標,分別遞增,尋找和為s的序列。 程式碼實現: public ArrayList<ArrayList<Integer>&