Gegeben eine Reihe von N ganzen Zahlen. Wie kann ich die Anzahl der Paare zählen, deren Summe im Array existiert?Algorithmus zum Zählen der Anzahl von Paaren, deren Summe im Array existiert
z. int a[] = {1, 3, 4, 6, 7}
. Hier gibt es drei solche Paare: (1 + 3) = 4, (3 + 4) = 7, (1 + 6) = 7.
Es gibt keine doppelten Nummern im angegebenen Array und das Array ist nicht sortiert Auch das Array kann geändert werden, es ist nicht notwendig, das Array zu verwalten.
Ich habe die folgenden zwei Codes versucht, aber ich möchte die Komplexität meines Codes auf weniger als O (n^2) reduzieren.
Versuchen 1: (Komplexität ist O (n^3))
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
main(){
int i,input,j,n,ans=0,sum;
cin>>n;
vector<int> vec;
for(i=0;i<n;i++){
cin>>input;
vec.push_back(input);
}
for(i=0;i<n;i++){
for(j=i+1;j<n;j++){
sum=vec[i]+vec[j];
if(find(vec.begin(),vec.end(),sum)!= vec.end()){
ans++;
}
}
}
cout<<ans;
}
Sie überprüfen alle Paare, wenn ihre Summe im Array ist, erhöhen Sie einen Zähler – user463035818
zeigen, was Sie versucht haben und wie es ausfällt. SO ist kein Code-Schreib-Service – user463035818
Ich habe meinen Code hinzugefügt und auch die Frage aktualisiert, da es drei Paare für gegebene Array gibt –