異性數
在乙個長度為n的整形陣列a裡,除了三個數字只出現一次以外,其他數字都出現了兩次。請寫出程式輸出任意乙個只出現一次的數字,程式時間和空間複雜度越小越好。例如 a【】={1,3,7,9,5,9,4,3,6,1,7},則輸出4或5或6。
1、xor為三個不同值的異或值,因為兩個相同的值和乙個不同的值異或,最後的值為那個不同的值。
2、函式lowbit的作用為記錄x從右邊起的第乙個1出現的位置,如a=0xe1執行lowbit後返回0x01。
3、fips=lowbit(a^c)^lowbit(b^c)^lowbit(a^b);因為lowbit(xor^d)^lowbit(xor^e)^lowbit(xor^d)=lowbit(xor^e);則最後fips=lowbit(a^c)^lowbit(b^c)^lowbit(a^b)。
4、現**fips的作用,現在已經知道三個數異或的值(xor),要從中過濾出乙個數,則要用數與數之間的某種特性,通過從右尋找一位元組第一次出現1的bit來找到他們的特 性,而fips則儲存了這種特性。
lowbit(a^c)儲存的是從右看起a和c第一次不同的位(以下將第一次出現不同的位簡稱不同位)
lowbit(b^c)儲存的是從右看起b和c第一次不同的位
lowbit(a^b)儲存的是從右看起a和b第一次不同的位
如果a和c,a和b的不同位相同,如a(bit)=1,b(bit)=0,c(bit)=0,可見此時b和c是相同的,則最後fips=lowbit(b^c);最後,判斷lowbit(xor^a【i】)==fips,而xor^a=a^b^c^a=b^c則過濾出a。最後找到了三個數中的乙個a。
思考:要是出現一次的數有四個呢?經實驗這種方法是不能過濾出來的。
最小括號匹配演算法(2013小公尺筆試)
二維陣列引數傳遞 2013小公尺筆試之最小括號匹配.cpp 定義控制台應用程式的入口點。動態規劃思想 dp i j 表示第i到j的需要的最少括號數 在計算dp i j 時,若已知dp i j 1 此時dp i j 有兩種可能 1 是str j 和前j 1個都不匹配,此時dp i j dp i j 1...
阿里筆試第一題
問答題1 輸出結果 21.25 7.50 30.00 2.50 從左到右依次為執行時間 單位是ms 此sql語句的分類,sql語句 2.5 0 insert into tablea values 1,columna columnb 12.5 1 insert into tableb values 2...
谷歌筆試最後一題
接上次的,google 2011校招清華筆試最後一題題目 感覺在考mapreduce思想和動態規劃 kof遊戲中乙個大招規則如下 s t,s與t分別為按鍵集合。當按鍵滿足一定規則時,可以連續按出大招,即連招。例如招數表如下 abc d,bcd e,de f,ef g。那麼,當按鍵順序為 abc d ...