Notwendigkeit Hinweise, um einen effizienten Algorithmus zu entwerfen, der die folgende Eingabe nimmt und die folgende Ausgabe ausspuckt.effizient sortierte kartesische Produkt von 2 sortierte Reihe von ganzen Zahlen
Input: zwei sortierten Arrays von ganzen Zahlen A und B, die jeweils mit der Länge n
Ausgabe: Ein sortierten Array, das von Arrays A und B. kartesischen Produkt besteht
For Example:
Input:
A is 1, 3, 5
B is 4, 8, 10
here n is 3.
Output:
4, 8, 10, 12, 20, 24, 30, 40, 50
Hier sind meine Versuche um dieses Problem zu lösen.
1) Da die Ausgabe n^2 ist, kann Effizienter Algorithmus nicht besser als O (n^2) Zeitkomplexität sein.
2) Zuerst versuchte ich einen einfachen aber ineffizienten Ansatz. Generieren Sie das kartesische Produkt von A und B. Es kann in O (n^2) -Zeitkomplexität erfolgen. wir müssen speichern, damit wir sortieren können. Daher auch O (n^2) Raumkomplexität. Nun sortieren wir n^2 Elemente, die nicht besser als O (n^2logn) gemacht werden können, ohne irgendwelche Annahmen über die Eingabe zu machen.
Schließlich habe ich O (n^2logn) Zeit und O (n^2) Raumkomplexitätsalgorithmus.
Es muss einen besseren Algorithmus geben, weil ich sortierte Art von Eingabearrays nicht verwendet habe.
Danke für die Bereitstellung der Verbindung. Es bestätigt die Tatsache, dass dieses Problem nicht besser gelöst werden kann als O (n^2logn) Zeitkomplexität. Seine nützliche Fähigkeit, die engere Untergrenze für ein gegebenes Problem zu erkennen (möglicherweise zu beweisen). Es ist klar, dass wir mein Problem leicht auf das Problem reduzieren können, auf das Ihr Link zeigt, aber wir können etwas in Bezug auf den Platz tun. Vielleicht kann ich ohne Platzmangel davonkommen, indem ich wenig oder keine Zeit vertreibe. – Srikanth
Wenn Sie die Matrix so erstellen können, wie Sie gehen, anstatt sie zu speichern, dann verwenden Sie nur O (* n *) Leerzeichen (ohne den Platz für die Ausgabe zu zählen). –
Könnten Sie bitte erläutern, wie es gemacht wird. Wir können problemlos ein kartesisches Produkt mit 2 for-Schleifen erzeugen, die jeweils auf einem Array laufen, aber es wird nicht sortiert und verwendet keinen Platz. Wenn die Ausgabe nicht im Programm gespeichert ist, zählen wir sie nicht, andernfalls wird sie als Teil der algorithmischen Raumkomplexität betrachtet. – Srikanth