給定乙個整數陣列(下標由 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輸入...