folgende Funktion:O (n log n) in Javascript-Algorithmus
function solution(K, A) {
var counter=0;
for (var i=0;i<A.length;i++) {
for (var j=i;j<A.length;j++) {
if (A[i]+A[j]===K) {
if (i===j)
counter++;
else
counter+=2;
}
}
}
return counter;
}
die Anzahl der Paarelemente innerhalb einer Anordnung findet, die eine Summe von K. I s es O hat (n^2/2) Gibt es einen anderen Algorithmus, um das oben genannte mit O(nlogn)
zu implementieren?
Warum wird der Zähler auf i == j erhöht? Es ist wahrscheinlich kein Paar, wenn es der gleiche Index ist. – Nomaed
Eigentlich können Sie eins besser gehen und dieses Problem in O (n) lösen, indem Sie eine Nachschlagetabelle verwenden. Es ist eine Standard-Interviewfrage. –
Ja, es ist n^2. Wenn das Array ungeordnet ist, glaube ich nicht, dass es besser geht. – nurdyguy