面試題 找單獨數字

2021-07-13 03:29:55 字數 891 閱讀 2412

陣列a中,除了某乙個數字x之外,其他數字都出現了

三次,而x出現了

一次。請給出最快的方法,找到x。

這道題是:陣列中除了乙個數字外,其他數字都出現了兩次這道題的公升級版,在其他數字都是兩個的陣列中找出單獨的數字,由於兩個相同的數字經過異或運算後為0,所以我們只要讓陣列中的每乙個數字相互異或就能找到那個單獨數字。

現在問題換成了其他數字都出現三次了,如果讓陣列中的數字都兩兩異或,出現三次的數相互異或就還是他本身,所以我們得換一種方式,但基本的思想都是相同的,就是通過位運算把出現三次的數對應位清零,剩下的位就是單獨的數字的位了。

[基本演算法]:

對於異或運算,是對應位重複出現兩次,則將對應位置0.

現在問題換成了對應位出現三次則清零,我們可以這樣做:

在重複出現兩次的基礎上,如果再出現一次,則總共出現了3次,

我們可以用乙個變數計算某一位偶數次出現1,用另乙個變數計算某一位奇數次出現1.

在上一次偶數次出現置1的基礎上,下一次奇數次出現了後置1,那麼這個出現三次的位就能被我們找到了。

我們使用另乙個變數記錄(偶數次出現和奇數次出現)變數的與後的值,就能得到出現三次的這些數字所對應的位出現1的數。

隨後我們對其取反,將取反後的變數和出現奇數次的變數相與,就能找出單獨出現的那個數字。

【**如下】:

#include #include int find_num(int *arr, int sz)

return odd;

}int main()

; int ret = find_num(arr, sizeof(arr) / sizeof(arr[0]));

printf("%d ", ret);

return 0;

}

Python 數字聯盟 面試題

1.寫出輸出結果 class myclass class name xiaobai def init self,args if args self.class name args 0 def print name self print this class name format self.clas...

面試題 消失的數字

題目是 陣列nums包含從0到n的所有整數,但其中缺了乙個。請編寫 找出那個缺失的整數。要求時間複雜度為o n 這道題我首先想到的是將這個陣列從小到大排序 時間複雜度為o n 的排序演算法 然後用乙個初始化為0的變數j跟著陣列的下標走,當變數的值與陣列的對應下標位置的值不相等時,此時變數j的值即為 ...

面試題 PHP面試題

建議 比如是系統配置,缺少了無法執行,自然使用 require 如果某一段程式少了,只是少了統計 訪問的,不是必不可少的。可以使用 include 而加不加 once 就是效率上的區別,雖然系統會幫你考慮只包含一次,但系統的判斷會降低效率,因此,更應該在開發之初,把目錄結構調整高好,盡量不使用 on...