演算法習題 出現k次與出現一次

2021-09-11 07:27:01 字數 501 閱讀 7882

題目:陣列中有的數隻出現1次,其餘數出現k次,輸出只出現1次的數x

解題思路:

1.利用技巧性結論:k個k進製的數進行不進製加法,每一位的和均為0。先把十進位制的數轉為k進製。

2.轉化為k進製後要按位(列)進行計算,所以要用二維陣列的形式儲存。轉化為k進製後由於數的大小不同,長度也有可能不同,雖然對於有k個數的數字而言求和都是0沒區別,但對要求的那個數來說位序很關鍵,(計算時是二維陣列由左到右計算,而換算回十進位制時是從右往左計算)所以要將轉化為k進製的數倒序儲存

3.因為要一列一列計算,所以要知道最多有多少列,即maxlen。

4.最終只剩下x的k進製表達,反退回x的十進位制大小即可。

關鍵點:

1.二進位制轉任意進製的

**演示:

出現k次與出現1次《演算法很美》

具體思路 建立乙個字元二維陣列char kradix new char len 將arr的每乙個數轉換成三進製integer.tostring arr i k 並進行翻轉 變為字串 最後整成字元陣列 同時要將最長的三進製數長度儲存if kradix i length maxlen maxlen kr...

出現k次與出現1次

問題描述 陣列中只有乙個數出現了1次,其他的數都出現了k次,請輸出只出現1次的數。解題思路 陣列a中,除了某乙個數字x之外,其他數字都出現了三次,而x出現了一次。請給出最快的方法找到x。應該如何思考呢?如果是兩個相同的就可以利用兩個相同的數異或結果為0來計算的,但這個題目中其他數字是出現了3次,因此...

題7 出現K次與出現1次

題目描述 乙個陣列中只有乙個數出現了1次,其他的數都出現了k次,請輸出出現了1次的那個數。原理 k個相同的k進製數之間做不進製的加法,結果為0,如,2個2得0 10個5得0 解題思路 將所有的數轉化成為k進製,然後做k進製的不進製加法運算,得出的結果再有k進製轉換位10進製。解題步驟 第一步 建立乙...