題目描寫敘述:
給定乙個源區間 [x,y]和n個無序的目標區間[x1,y1],[x2,y2],...[xn,y,],推斷給定的源區間[x,y]在不在目標區間內。
比如:給定源區間[1 6]和目標區間[1 2][2 4][4 9]就可以覺得區間[1 6]在目標區間內,由於源區間的並集為[1 9 ].
試想一下,如今在這種乙個目標區間的集合。 須要頻繁地去查詢乙個區間是否在該集合中。那麼怎麼樣才幹減少單次查詢的復
雜度呢。預處理。對區間的預處理能夠滿足這種需求。
直接上方法:
第一步: 首先對區間進行合併(也就是將區間merge成為不相交的區間的集合)
第二步: 再在這個處理之後的區間中去查詢這樣源區間,關於查詢,當然二分能夠有非常好的效果,那麼將區間排序就可以。
於是: 1 將區間按其起始點排序。
2 merge相交的區間
3 二分查詢源區間就可以。
**例如以下:
區間重合 c
給出乙個區間的集合,請合併所有重疊的區間。示例 1 輸入 1,3 2,6 8,10 15,18 輸出 1,6 8,10 15,18 解釋 區間 1,3 和 2,6 重疊,將它們合併為 1,6 示例 2 輸入 1,4 4,5 輸出 1,5 解釋 區間 1,4 和 4,5 可被視為重疊區間。先排序 按照...
程式設計之美 區間重合判斷
問題描述 給定乙個源區間 x,y 和若干個無序的目標區間 x0,y0 x1,y1 x2,y2 xn,yn 判斷源區間是否在目標區間內。思路 1 分解源區間 把目標區間逐一的對映在源區間上,可以將源區間分解為更小的區間。最後看是否能將源區間全部分解。例如 源區間 目標區間 step 1 目標區間 可以...
區間重合判斷 C語言實現
問題描述 給定乙個源區間 x,y y x 和n個無序的目標區間 x1,y1 x2,y2 x3,y3 xn,yn 判斷源區間 x,y 是不是在目標區間內?例如給定源區間 1,6 和一組無序的目標區間 2,3 1,2 2,9 3,4 即可認為區間 1,6 在區間 2,3 1,2 2,9 3,4 內。解決...