簡單的演算法問題8 單獨的數字(位運算)

2021-08-02 21:59:23 字數 1019 閱讀 6278

此演算法均是用c++編寫

此題目均是來做計蒜客

給定乙個陣列 a,除了乙個數出現一次之外,其餘數都出現三次。找出出現一次的數。

如:,找出 7。

你的演算法只能是線性時間的複雜度,並且不能使用額外的空間哦~

第一行輸入乙個數 n(1≤n≤500),代表陣列的長度。

接下來一行輸入 n個 int 範圍內(-2147483648…2147483647)的整數,表示陣列 a。保證輸入的陣列合法。

輸出乙個整數,表示陣列中只出現一次的數。

形如:

樣例輸入

4 0 0 0 5

樣例輸出

51.這道題答案的重點演算法是位運算,對於我來說這道題的重點是查詢,怎麼才能查詢出數字不是三個的那個數,我想起當年學資料結構的時候的演算法了,就寫了乙個最簡單的,在查詢演算法中用了乙個num來計數,如果遇見相同的次數就加一,如果在陣列裡面數隻出現了一次肯定num=1;而其他的數字的num=3;所以我只有挑選出num=1;的那個肯定就是只出現一次的那個數。

測試成功~!

單獨的數字 位運算

時間限制 1000ms 記憶體限制 65536k 給定乙個陣列 a 除了乙個數出現一次之外,其餘數都出現三次。找出出現一次的數。如 找出 7 你的演算法只能是線性時間的複雜度,並且不能使用額外的空間哦 第一行輸入乙個數 n 1 n 5 00 代表陣列的長度。接下來一行輸入 n 個 int 範圍內 2...

位運算習題 單獨的數字

給定乙個陣列 a a,除了乙個數出現一次之外,其餘數都出現三次。找出出現一次的數。如 找出 77。你的演算法只能是線性時間的複雜度,並且不能使用額外的空間哦 第一行輸入乙個數 n 1 n 500 n 1 n 500 代表陣列的長度。接下來一行輸入 n n 個 int 範圍內 2147483648 2...

計蒜客 單獨的數字(位運算)

給定乙個陣列 a,除了乙個數出現一次之外,其餘數都出現三次。找出出現一次的數。如 找出 7。你的演算法只能是線性時間的複雜度,並且不能使用額外的空間哦 輸入格式 第一行輸入乙個數n 1 n 500 代表陣列的長度。接下來一行輸入 n 個 int 範圍內 2147483648 2147483647 的...