題目
給定乙個陣列arr,其中只有乙個數出現了奇數次,其他數都出現了偶數次,列印這個數。
高階問題
有兩個數出現了奇數次,其他數出現了偶數次,列印這兩個數。
要求時間複雜度o(n),空間複雜度(1)。
基本思路
整數n與0異或的結果是n,整數n與整數n異或的結果是0;同時,異或滿**換律和結合律。
知道上述的內容,解決這道題就很容易了。如果n出現了偶數次,那麼,所有的n異或完後一定為0;如果n出現了奇數次,那麼所有的n異或完後一定為n。即使陣列中同乙個數不是連著出現的,根據異或的交換律和結合律,我們知道,陣列中順序的改變不會影響結果。所以,這道題的步驟就是:先申請乙個整型變數記為e,初始化為0,讓e去和陣列中每乙個元素進行異或,最終的e就是答案
public
void
printoddtimesnum1
(int
arr)
system.out.
println
(eo)
;}
高階問題
public
static
void
printoddtimesnum2
(int
arr)
int rightone = eo &
(~eo +1)
;for
(int cur : arr)}
system.out.
println
(eohasone +
" "+
(eo ^ eohasone)
)}
題目
在其他數都出現偶數次的陣列中找到出現奇數次的數
題目 給定乙個陣列arr,其中只有乙個數出現了奇數次,其他數都出現了偶數次,列印這個數。高階問題 有兩個數出現了奇數次,其他數出現了偶數次,列印這兩個數。要求時間複雜度o n 空間複雜度 1 基本思路 整數n與0異或的結果是n,整數n與整數n異或的結果是0 同時,異或滿 換律和結合律。知道上述的內容...
在其它數都出現偶數次的陣列中尋找出現奇數次的數
題目 給定乙個整形陣列,其中只有乙個數出現了奇數中,其它的數都出現了偶數次,求只出現了奇數次的這個數.高階 有兩個數出現了奇數次,其它數都出現了偶數次,求這兩個數.完整 package chapter 7 bitoperation public class problem 05 eventimeso...
在其他數都出現k次的陣列中找到僅出現過一次的數字
廢話不多說,直接上題目 給定乙個陣列,在這個陣列中有呀乙個數隻出現了一次,其他的數出現次數都是k k 1 請返回這個數字。首先,我們考慮一下這個問題。對於乙個k進製的數字。如果有k個k進製的數字相加的話。會是乙個什麼樣的結果!下圖是7個7進製數字無進製相加的結果。這裡我們發現如果k個k進製的數字無進...