In Frage this enthielt die Antwort einen Algorithmus, um eine Überlappung einer Liste von Bereichen in einem bestimmten Bereich zu finden. Aber in meiner Situation habe ich eine Liste von n
Ganzzahlen, die bei der Gruppierung in n^2
Paare Bereiche bilden. Zum Beispiel, wenn wir array[i]
und array[j]
aus dem Integer-Array nehmen, (array[i]-array[j],array[i]+array[j])
einen Bereich machen. Aber um den vorgeschlagenen Algorithmus zu implementieren, ist die Lösung von O(n^2)
Speicherkomplexität. Kann es (hinsichtlich des Gedächtnisses) weiter optimiert werden?Mehr speichereffizienter Algorithmus zum Auffinden von Überlappungen in Bereichen
Beispiel: Ich habe einen größeren Bereich (l,r)
, und ich habe, wie viele Zahlen in (l,r)
liegen zu finden in mindestens einem der in der Liste der ranges.For Beispiel die gegebene Ganzzahl-Array {1,2,3}
ist. So sind alle möglichen Bereiche (2-1,1+2), (3-1,1+3), (3-2,3+2)
. Angenommen (l,r)
ist (2,7)
. Dann seit (2,5)
in mindestens einem von ihnen 4
gibt es die Antwort.
@ user3386109 ..... Ich habe einen größeren Bereich '(l, r)', und ich muss herausfinden, wie viele ganze Zahlen in (l, r) in mindestens einer der Liste der Bereiche liegen. Die Liste der Bereiche kann aus dem gegebenen Integer-Array in der beschriebenen Weise berechnet werden. – yobro97
@ user3386109 .... zum Beispiel ist das angegebene Integer-Array '{1,2,3}'. Also sind alle möglichen Bereiche "(2-1,1 + 2), (3-1,1 + 3), (3-2,3 + 2)". Angenommen, '(l, r)' ist '(2,7)'. Dann, da '(2,5)' in mindestens einem von ihnen '4' existiert, ist die Antwort. – yobro97