So führen Sie zwei sortierte Arrays effizient zusammen
In einem aktuellen Interview wurden Sie gebeten, zwei sortierte Arrays zu einem einzigen sortierten Array zusammenzuführen. Sie haben eine Lösung bereitgestellt, bei der Elemente verglichen und an ein neues Array angehängt wurden. Obwohl dieser Ansatz richtig ist, kann er für eine bessere Leistung optimiert werden.
Hier ist eine effizientere Lösung:
public static int[] merge(int[] a, int[] b) { int[] answer = new int[a.length + b.length]; int i = 0, j = 0, k = 0; while (i < a.length && j < b.length) { answer[k++] = a[i] < b[j] ? a[i++] : b[j++]; } while (i < a.length) answer[k++] = a[i++]; while (j < b.length) answer[k++] = b[j++]; return answer; }
Die optimierte Lösung verwendet eine einzige Schleife, um über beide Arrays zu iterieren und zusammenzuführen sie in das Antwortarray ein. Durch die Verwendung des ternären Operators (? :) können wir das kleinere Element bestimmen und es an das Antwortarray anhängen, ohne dass eine zusätzliche bedingte Anweisung erforderlich ist.
Zusätzlich verwenden wir k, um den Index des Antwortarrays danach zu erhöhen Jedes Element wird hinzugefügt, wodurch der Code vereinfacht und die Anzahl der Vorgänge reduziert wird.
Im Vergleich zur Originallösung ist diese optimierte Version prägnanter und wird mit weniger bedingten Prüfungen ausgeführt, was zu einer Verbesserung führt Effizienz.
Das obige ist der detaillierte Inhalt vonWie kann ich zwei sortierte Arrays effizient zusammenführen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!