(Java)數組中只出現一次的數字

一、題目

一個整型數組裏除了兩個數字之外,其他的數字都出現了兩次。請寫程序找出這兩個只出現一次的數字。

二、題解

對數組進行排序,然後每次比較一對,前後相同,就跳過這對,如果前後不同,則記錄該數字,繼續按照成對成對的值進行比較,因爲已經排好序了,所以數值相同的值都是緊挨着成對出現。

異或方式的解法待補充

public static void FindNumsAppearOnce(int[] array, int num1[], int num2[]) {

        if (array.length == 0 || array == null) {
            return;
        }
        //num記錄找到數字的個數
        int num = 0;
        //對數組進行排序,這樣方便依次查找
        Arrays.sort(array);
        //循環判斷數組中的值
        for (int i = 0; i < array.length; i++) {
            //如果最後一個數字是單個出現的數字,是特殊情況所以需要單獨判斷下
            if (i == array.length - 1) {
                num2[0] = array[i];
                break;
            }
            //全部找到時,結束循環
            if (num == 2) {
                break;
            } else {
                //如果當前數字和下一個數字值相同,則跳過這對數字
                if (array[i] == array[i + 1]) {
                    i = i + 1;
                } else {
                    //否則開始存儲單個的數字,並用num記錄已經找到的個數
                    if (num == 0) {
                        num1[0] = array[i];
                    } else {
                        num2[0] = array[i];
                    }
                    num++;
                }
            }
        }
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章