Ich verwendete C++ für die Lösung von Problem, Kodulmität PermissingElem. Ich habe xor
nicht verwendet, nur die Summe der Reihenfolge.Ich kann nicht verstehen, Kodulität PermissingElem falsch mit C/C++
C++
int solution(vector<int> &A) {
// write your code in C++11 (g++ 4.8.2)
int n = A.size();
long long sum = ((n+1)*(n+2))/2;
for(int i=0; i<n; i++) {
sum -= A[i];
}
return (int)sum;
}
Es ist in 80% der Test-Ergebnis führen zu großen Test nicht bestanden = ~ 100000
Falsche Antwort Beispiel
bekam -2147483647 erwartet 1
Wenn Sie jedoch java verwenden, ergibt sich 100%.
java
public int solution(int[] A) {
long N = A.length + 1;
long total = N * (N + 1)/2;
for (int i : A) {
total -= i;
}
return (int)total;
}
Was ist der Unterschied zwischen C++ und Java? Ich verwendete Datentyp der Summe, lang, lang lang, lang lang int ..
Thx.
Warum geben Sie eine lange als Int zurück? Was ist, wenn es größer als der mögliche Wert des Int ist? – Annabelle
Vielleicht könnte das Kompilieren von 64bit helfen –
Ist 'sum = ((n + 1) * (n + 2))/2' eigentlich gleichzusetzen mit' total = N * (N + 1)/2'? – wally