56 陣列中數字出現的次數

2021-10-02 17:12:08 字數 773 閱讀 9081

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

2、在乙個陣列中除了乙個數字只出現一次之外,其他數字都出現了三次。請找出那個只出現一次的數字。

第1題:從頭到尾依次異或陣列中的每個數字,那麼最終的結果就是兩個只出現一次的數字的異或結果,因為其他數字都出現了兩次,所以抵消了。這個結果數字的二進位制至少有一位為1。在結果數字中找到第乙個為1的位的位置,記為第n位。以第n位是否為1把原陣列分為兩個子陣列。由此分別異或子陣列得到最終結果。**如下:

public

void

(int

array,

int num1,

int num2)

int firstbitnum=numxor&

(-numxor)

;for

(int num:array)

else

}}

第2題:乙個數字出現三次,那麼該數二進位制表示的每一位(0或1)也出現三次。如果把所有出現三次的數字的二進位制表示的每一位都分別加起來,那麼每一位的和都能被3整除。如果某一位的和能被3整除,那麼那個數對應的那一位是0,否則為1。

public

intthreetimessinglenumber

(int

nums)

}int result=0;

for(

int i=

0;i)return result;

}

56 陣列中數字出現的次數

1 當陣列中別的數都出現兩次,只有乙個數隻出現了一次,找出這個數 由於異或本身會是0,所以用0依次異或陣列中的每個數,最後會變成單獨的那個數 int xor 0 for int i 0 ixor array i 最後xor即單獨的這個數的數值 2 陣列中別的數字都出現了兩次,有兩個數字只出現了一次 ...

面試題56 陣列中數字出現的次數

題目一 乙個整型陣列裡除了兩個數字之外,其他的數字都出現了兩次。請寫程式找出這兩個只出現一次的數字。異或的基本性質 2個相同的數異或等於0,且異或操作 滿足結合律和交換律。首先 乙個整型陣列裡除了1個數字之外,其他的數字都出現了兩次。請寫程式找出這個只出現一次的數字。找出陣列中只出現一次的數 num...

面試題56 陣列中數字出現的次數

陣列中只出現一次的兩個數字。乙個整型陣列裡除兩個數字之外,其他數字都出現了兩次。請寫程式找出這兩個只出現一次的數字。要求時間複雜度o n 空間複雜度o 1 例如,輸入陣列,因為只有4和6只出現了一次,其他數字出現了兩次,所以輸出4和6。先考慮這樣乙個問題,如果這個陣列中,只有乙個陣列出現1次,其餘數...