Wenn wir ein Array haben, das Nummern enthält, die dort zweimal auftritt, und eine Zahl, die nur einmal vorkommt, können wir XOR-Operator verwenden, um es aufgrund der Kommunikationen zu finden Recht. zFinden Sie die Nummer in Array nur einmal mit bitweisen Operatoren
1 2 3 2 3
1^2^3^2^3 = (2^2)^(3^3)^1 = 1
Aber können wir bitweise Tricks anwenden, um die Nummer zu finden, die einmal in Array occures wenn andere Zahlen n mal occure können, n> 1?
Ziemlich sicher, dass es nur funktioniert, wenn 'n% 2 == 0'. – NathanOliver
@NathanOliver Ja, sie heben sich nur gegenseitig auf, wenn sie paarweise kommen. Es ist, als ob man negative Zahlen multipliziert: 2, 4 oder 6 negative Zahlen ergeben eine positive Zahl, da sich die Zeichen gegenseitig aufheben. 3, 5 oder 7 negative Zahlen haben jeweils ein "baumelndes" Negativ, das seinen Weg zum endgültigen Ausgang findet. – Dan