Finden Sie alle kollinearen Punkte in einem gegebenen Satz

Dies ist ein interview-Frage: "Finden Sie alle kollinearen Punkte in einem gegebenen Satz".

So wie ich das verstehe, Fragen Sie zum drucken der Punkte, die liegen in der selben Zeile (und jeder zwei Punkte sind immer kollinear). Ich würde Folgendes vorschlagen.

  1. Wir stellen zwei Arten Line (paar Doppel) und die Point (paar von ganzen zahlen).
  2. Erstellen Sie eine multimap : HashMap<Line, List<Point>)
  3. Schleife über alle Paare der Punkte und für jedes paar: berechnen Sie die Line verbinden Sie die Punkte und fügen Sie die Zeile mit diese Punkte die multimap.

Schließlich die multimap enthält die Zeilen, die Schlüssel und eine Liste kollinearen Punkte für jede Zeile als Wert.

Die Komplexität ist O(N^2). Macht es Sinn ? Gibt es bessere Lösungen ?

Ich bin immer ein Gefühl, dass dies nicht die vollständige Beschreibung des Problems. Ein Teil war verloren.
Warum denken Sie so ?
Genau wie du gesagt hast, n^2 die Lösung ist trivial und es gibt keine bessere: Ergebnis der Größe ist proportional zu n^2.
BTW, man kann nicht für jede Linie mit einem paar von ganzen zahlen, müssen Sie ein paar von reellen zahlen.
Ja, aber das ist das problem, nicht dass die denken oder Algorithmus. Es ist Fragen, wie die Summe der Quadrate der Werte in der NxN-matrix. Wie lösen Sie es? Gehen Sie durch alle Werte, und fügen Sie jedes Quadrat um das Ergebnis.

InformationsquelleAutor Michael | 2010-12-29

Schreibe einen Kommentar