題目描述:
乙個整型陣列裡除了兩個數字之外,其他的數字都出現了兩次。請寫程式找出這兩個只出現一次的數字。
題解:
題解一:利用hashmap
public
void
(int
array,
int num1,
int num2)
boolean flag =
true
;for
(int i =
0;i < array.length;i++
)else}}
}
題解二:
(1)將整個陣列異或,異或的結果為倆個單獨數字異或的結果。
(2)求出這個結果中從左往右的第乙個為1的位元位,記為index。
(3) 再將陣列中的每個元素都與index,這樣能使index位相同的元素分到一組。
public
void
(int
array,
int num1,
int num2)
// 找到位數不同的是第幾位
int index =1;
while
((index & key)==0
)int res1 =0;
int res2 =0;
for(
int i =
0;i < array.length;i++
)else
} num1[0]
= res1;
num2[0]
= res2;
}
c語言版本: 40 陣列中只出現一次的數字
題目描述 乙個整型陣列裡除了兩個數字之外,其他的數字都出現了兩次。請寫程式找出這兩個只出現一次的數字。異或的方法。先考慮乙個簡單一點的問題,陣列裡除了乙個數字以外,其它都出現兩次,找到這個數字。這個題之前遇到過,做法是把陣列裡所有數字異或,最後得到的數字就是只出現一次的那乙個數字。為什麼是這樣呢?因...
40 陣列中只出現一次的數字
題目描述 乙個整型陣列裡除了兩個數字之外,其他的數字都出現了偶數次。請寫程式找出這兩個只出現一次的數字。思路 1.利用map,map儲存的是key value對,在這裡key是陣列中的數字,value是陣列中數字出現的次數。遍歷陣列,將數字存入map,那麼map中value為1的兩個數字就是陣列中的...
40 陣列中只出現一次的數字
題目描述 乙個整型陣列裡除了兩個數字之外,其他的數字都出現了兩次。請寫程式找出這兩個只出現一次的數字。class solution 可以用位運算實現,如果將所有所有數字相異或,則最後的結果肯定是那兩個只出現一次的數字異或的結果,所以根據異或的結果1所在的最低位,把數字分成兩半,每一半裡都還有只出現一...