lintcode205 區間最小數 線段樹

2021-10-02 23:39:22 字數 1019 閱讀 2182

給定乙個整數陣列(下標由 0 到 n-1,其中 n 表示陣列的規模),以及乙個查詢列表。每乙個查詢列表有兩個整數 [start, end]。 對於每個查詢,計算出陣列中從下標 start 到 end 之間的數的最小值,並返回在結果列表中。

樣例

樣例1:

輸入:陣列 :[1,

2,7,

8,5] 查詢 :[(1

,2),

(0,4

),(2

,4)]。輸出:[2,

1,5]

樣例2:

輸入:陣列 :[4,

5,7,

1] 查詢 :[(1

,2),

(1,3

)]。輸出:[5,

1]挑戰每次查詢在o

(logn)的時間內完成

注意事項

在做此題前,建議先完成以下三道題 線段樹的構造, 線段樹的查詢 及 線段樹的修改。

自己寫了乙個線段樹的類,一直提示重定義了,刪去以後就accpeted了

最好先看過

線段樹的構造:

線段樹的查詢:

思路:裡面的線段樹只有最大值,沒有最小值,所以需要我們稍微修改一下,每一次取左右子樹的最大值中的較小值即可。

/**

* definition of interval:

* classs interval

* }*//*class segmenttreenode

};*/

class

solution

return res;

} segmenttreenode*

build

(vector<

int>

&a,int start,

int end)

intquery

(segmenttreenode * root,

int start,

int end)

};

LintCode 1668 區間最小覆蓋

1668.區間最小覆蓋 cat 專屬題目 數軸上有 n 個區間.現在需要在數軸上選取一些點,使得任意乙個區間內至少包含乙個點.返回最少選取的點的數目.樣例樣例 1 輸入 1,5 4,8 10,12 輸出 2 解釋 選擇兩個點 5,10 第乙個區間 1,5 包含了 5 第二個區間 4,8 包含了 5 ...

5 區間第k最小

description 找到給定陣列的給定區間內的倒數第 k小的數值。input 輸入的第一行為陣列,每乙個數用空格隔開 第二行是區間 第幾個數到第幾個數,兩頭均包含 兩個值用空格隔開 第三行為k值。output 結果。sample input 1 1 2 3 4 5 6 7 3 5 2 sampl...

LintCode 1652 區間異或 II

給定陣列 a 下標從0到n 1,n為陣列長度 和乙個查詢列表。每一項查詢包括兩個整數 i 和 k。對於每次查詢,計算ai,a i 1 a i k 1 的異或值。結果儲存在列表中。樣例1 輸入 a 1 2,3 4 and query 0,2 1,2 輸出 3 1 解釋 1 2 32 3 1 樣例2輸入...