陣列中只出現一次的數字

2021-07-25 06:44:57 字數 760 閱讀 9641

題目描述

乙個整型陣列裡除了兩個數字之外,其他的數字都出現了兩次。請寫程式找出這兩個只出現一次的數字。

解題思路:

先從頭到尾對陣列中的每乙個數字進行異或運算,得到的結果indexof1,判斷結果的二進位制數中倒數第n位是為1,

再將陣列分為兩個子陣列,分別為進行異或運算後倒數第n為為1的數字為一組,不為1的數字為一組

異或運算中,乙個數異或本身的結果為0,最後的到兩個子陣列中的兩個結果為兩個所求的數字。

class solution 

int resultexclusiveor = 0;

//對陣列中所有的數字進行異或運算,得到結果resultexclusiveor

for (int i = 0; i < size; ++i)

//算出二進位制結果resultexclusiveor中倒數第幾位的數字為1

int indexof1 = findfirstbitis1(resultexclusiveor);

*num1 = 0;

*num2 = 0;

//對陣列中的數字進行分組進行異或預算,resultexclusiveor中倒數第indexof1位

for (int j = 0; j < size; ++j)

}int findfirstbitis1(int num)

return indexbit;

} int isbit1(int num, int indexbit)

};

陣列中只出現一次的數字

何海濤 劍指offer 名企面試官精講典型程式設計題 九度oj 題目描述 乙個整型陣列裡除了兩個數字之外,其他的數字都出現了兩次。請寫程式找出這兩個只出現一次的數字。輸入 每個測試案例包括兩行 第一行包含乙個整數n,表示陣列大小。2 n 10 6。第二行包含n個整數,表示陣列元素,元素均為int。輸...

陣列中只出現一次的數字

來自劍指offer 分析 如果整型陣列中只有乙個數字出現一次,我們只需將陣列中每個元素依次做異或操作,最終就得到了只出現一次的數字。因為自己與自己異或後,結果為0.現在,陣列中有兩個數字只出現一次,上述一次遍歷後將所有元素異或得不到那兩個數字。因此,我們試著將原陣列分成兩個子陣列,使每個子陣列中分別...

陣列中只出現一次的數字

package com.google.android public static void main string args int result new int 2 find data,result for int i result private static void find int dat...