Ich habe dieses algo und ich möchte wissen, ob es möglich ist, um es besser zu machen (weniger Komplexität):Wie kann man einen besseren Algorithmus mit diesem Code erstellen?
for i = 3 to A.length
for j = 2 to i − 1
for k = 1 to j − 1
if |A[i] − A[j]| = = |A[j] − A[k]| or |A[i] − A[k]| = = |A[j] − A[k]|
return true
return false
Die Komplexität O sein muss (n^3), und der Satz nach „oder“ ist nur A [i] = A [j]
ich bin nicht sicher, dass ein besseren Algorithmus existieren könnte ...
Wozu dient dieser Algorithmus? Was tut es? – EvilTak
Versuchen Sie zu bestimmen, ob das Array ein Tripel enthält, das aus zwei Punkten zusammen mit ihrem Mittelpunkt besteht? –
Auch Ihre Behauptung, dass "der Satz nach" oder "ist nur A [i] = A [j]" macht wenig Sinn, da '| A [i] - A [k] | = = | A [j] - A [k] | 'ist nicht äquivalent zu' A [i] == A [j] ' –