網易有道的一道演算法面試題

2021-05-28 10:59:08 字數 534 閱讀 8646

1、存在乙個陣列,陣列大小為2n+1,裡面有n對個數,加上另外乙個單獨出現的數,例如:1,2,2,3,1.(陣列是無序的,考慮排序的話一定會超過限制)這5個數中的單獨的數就是3,要你用你能想到的最高效率的方法找出來。這個絕對是個老題,old了啊,old了啊。大家很容易就想到將所有的數直接異或來獲得答案,這絕對是個非常好的方法。

2、我也在面試中較快的想到了這個方法,但是當這個問題的進化版出現的時候,我愣了很久,問題改為陣列的大小為2n+2,也就是說有兩個只出現一次的數了。

舉個例子,1,2,3,2,4,1,這個例子中,3,4這兩個數字就是我們要找的數。此時我們繼續沿著異或的思路找下去,我們得到乙個結果,這個結果就是3,4兩個數字,哪些位不同。這樣我們將可以根據這個不同位來進行區分,我們為了簡便選擇最低位為1的乙個數,例如此時,選擇flag=001,此時遍歷整個陣列,初始化num1,num2為0,將每個元素與flag進行按位與操作,如果大於0,那麼與num1異或,如果等於0,那麼與num2異或。這樣遍歷一遍之後,那麼num1,num2就是我們要找的這兩個數了。

**實現還是很簡單,於是這裡就不貼了。

一道面試題

一道面試題 射擊運動員10發打中90環有多少種可能,請編寫程式計算出來,並列印出結果,0環和10環均有效。打中90環就是沒打中10環,所以打中90環跟打中10環的可能性是一樣的。然後開始遞迴狂打槍,一到10就記錄 if params i 10 在迴圈的控制中已經排除了大於10的可能性 i 10 pa...

一道面試題

前些時候在找工作,就在準備結束此次找工作歷程的時候,去了一家公司面試,去了之後技術經理直接帶到一台電腦旁,給了一張紙條,上面是這樣的題目 用c或c 來實現 1 建立一棵樹,該樹的深度是隨機的,每個節點的位元組點數是隨機的。2 給每個節點分配一段隨機大小的記憶體空間,給每個節點賦乙個隨機數。3 遍歷這...

一道面試題

如果n為偶數,則將它除以2,如果n為奇數,則將它加1或者減1。問對於乙個給定的n,怎樣才能用最少的步驟將它變到1。例如 n 61 n 60 n 2 30 n 2 15 n 16 n 2 8 n 2 4 n 2 2 n 2 1 public class myclass public static vo...