一、题目内容

image.png

二、题解

解法1:

思路

image.png
a^a = 0

代码

  1. class Solution {
  2. public int[] singleNumbers(int[] nums) {
  3. int x=0,y=0;
  4. int n=0,m=1;
  5. for(int num:nums){
  6. n^=num;
  7. //n=x^y
  8. }
  9. while((n & m) == 0){
  10. m <<= 1;
  11. //循环左移,找到第一个不相等的数位,即可以用这一位区分x和y
  12. }
  13. for(int num:nums){
  14. if((num&m) == 0){
  15. x^=num;
  16. }else{
  17. y^=num;
  18. }
  19. }
  20. return new int[]{x,y};
  21. }
  22. }