方法1:使用哈希表存储不重复的数字

import java.util.HashMap;
public static void FindNumsAppearOnce1(int[] array,int[] num1,int[] num2){
        HashMap<integer,integer> map=new HashMap&lt;&gt;();
        for(int i=0;i<array.length;i++){ if(map.containskey(array[i])){ map.remove(array[i]); } else map.put(array[i],1); int a[]="new" int[array.length]; i="0;" for(int k : map.keyset()){ keyset()返回所有的键 a[i]="k;" i++; num1[0]="a[0];" num2[0]="a[1];" ``` public class solution { ** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 @param array int整型一维数组 @return int[] findnumsappearonce (int[] array) write code here hashmap<integer,integer> map=new HashMap&lt;&gt;();
        for(int i=0;i<array.length;i++){ if(map.containskey(array[i])){ map.put(array[i],map.get(array[i])+1); } else{ map.put(array[i],1); int i="0;" int[] arr="new" int[2]; for (entry<integer, integer> entry : map.entrySet()) {
            if(entry.getValue()==1){
                arr[i]=entry.getKey();
                i++;
            }
        }
        return arr;
    }
}

方法2:异或运算

把数组中所有的数,依次异或运算,最后剩下的就是落单的数,因为成对儿出现的都抵消了。

    //------------没看懂-------------------
    public void FindNumsAppearOnce2(int [] array,int num1[],int num2[]) {
        int eO = 0,eOne = 0;
        for(int num:array)
            eO ^=num;
        int firstOne = eO &amp;(~eO +1);//求得二进制中第一位1,比如101和011得到010
        for(int cur:array)
            if ((cur&amp;firstOne) !=0) {//把第k位是1的一组找出来进行异或
                eOne ^=cur; 
        }//最终结果就是第k位是1且落单的那个
       num1[0] = eOne;
       num2[0] = eOne^eO;//异或结果的运算规则。
    }

</array.length;i++){></array.length;i++){></integer,integer>