1. 簡述
給定乙個源區間[x,y] (y>=x)和n個無序目標區間[x1,y1][x2,y2][x3,y3]...[xn][yn],判斷[x,y]是否在目標區間內。
2. 思路
這個比較簡單,合併目標區間,判斷源區間是否在目標區間內即可。具體過程如下:
第一步,先把目標區間排序。
第二步,從第乙個區間開始,遍歷首先找到乙個[xi,yi],使得xi<=x,如果找不到,說明不在目標區間內,如果找到了並且yi>=y,那麼結束工作,源區間在目標區間內,如果找到了,但是yiy(i-1),那麼區間斷裂,源區間不在目標區間內,否則如果yi>=y,找到了,源區間在目標區間內,否則繼續尋找。
第四步,如果都遍歷結束了,但是沒有發現源區間一定在目標區間內,說明源區間必然不在目標區間內。
第一步,n*logn,第二步+第三步,n,第四步,1。複雜度為o(n logn)
3. 參考
程式設計之美,2.19,區間重合判斷
程式設計之美2 19 區間重合判斷
題目 給定乙個源區間 x,y y x 和n個無序的目標區間 x1,y1 x2,y2 x3,y3 xn,yn 判斷源區間 x,y 是不是在目標區間內?例如,給定源區間 1,6 和一組無序的目標區間 2,3 1,1 3,9 即可認為區間 1,6 在區間 2,3 1,1 3,9 內,因為目標區間實際上是 ...
程式設計之美 2 19 區間重合判斷
題目大意 給定源區間 x,y x y 和 n個無序的目標區間 xi,yi 1 i n 判斷源區間是否在目標區間內。分析 書中介紹了兩種解法。第一種 將目標區間投影到源區間,看最終未被覆蓋的區間是否變為。這種方法的複雜度無疑是很高的。o n 2 另外,對於k組源區間查詢,其複雜度是單次的k倍。第二種 ...
程式設計之美 2 19 區間重合判斷
給定乙個源區間 x,y y x 和n個無序的目標區間 x1,y1 x2,y2 xn,yn 判斷源區間 x,y 是不是在目標區間內 eg,給定乙個源區間 1,6 和一組無序的目標區間 2,3 1,2 3,9 即可認為 1,6 在區間 2,3 1,2 3,9 內 因為目標區間合併之後,實質為 1,9 i...