Lassen a
ein Intervall[a.start, a.end]
, wo a.start
und a.end
sind reelle Zahlen, so dass 0 <= a.start < a.end <= 1
.Zeitkomplexität der eine Liste der Intervalle der Suche
Zwei solche Intervalle a
und b
schneiden wenn a.start < b.start < a.end
ODER b.start <= a.start < b.end
As
Lassen Sie eine sortierte Liste von nicht-schneidenden Intervallen sein a_0, a_1, ..., a_n
so dass a_i
nicht a_j
und a_i.start < a_j.start
für i < j
Da schneidet das Intervall b
, bestimmen das erste Intervall und das letzte Intervall in As
, dass b
int (oder finde keine Schnittpunkte). dh: Wenn möglich, finden i
und j
, so dass b schneidet a_i
und a_j
aber nicht a_{i-1}
oder a_{j+1}
ich dies mit einer modifizierten binären Suche gelöst habe (O (n) im schlechtesten Fall), Also meine Intuition ist, dass dies ein lg (n) Problem ist, aber ich weiß nicht, ob ich den besten Algorithmus habe.
Wie haben Sie es geändert? Warum wäre es im schlimmsten Fall O (n)? – shole