Es ist ein Leetcode-Problem. Gegeben ein Array von Zahlen num, in denen genau zwei Elemente nur einmal vorkommen und alle anderen Elemente genau doppelt vorkommen. Finde die zwei Elemente, die nur einmal vorkommen.Bit-Operation UND
Zum Beispiel: Gegebene Zahlen = [1, 2, 1, 3, 2, 5], zurück [3, 5]. Mein Code ist:
class Solution {
public:
vector<int> singleNumber(vector<int>& nums) {
int axorb=0;
for(auto i:nums) axorb=axorb^i;
int differbit=(axorb&(axorb-1))^axorb;
int group3=0, group5=0;
for(auto i:nums)
if(differbit&i!=0) group5=group5^i;
else group3=group3^i;
return vector<int>{group3,group5};
}
};
Vorlage Ergebnis ist falsche Antwort.
Input:[0,0,1,2]
Output:[3,0]
Expected:[1,2]
Aber wenn ich gerade markierten Teil
if(differbit&i) group5=group5^i;
zu
ändern wird akzeptiert. Ich habe viel Zeit damit verbracht, darüber nachzudenken, habe aber immer noch keine Ahnung. Vielleicht ist eine Art Konvertierung passiert? Danke