位運算相關演算法

2021-09-27 17:00:20 字數 801 閱讀 2597

思想:使用異或,遍歷陣列,兩兩異或,即是最終的答案

給定乙個包含 0, 1, 2, …, n 中 n 個數的序列,找出 0 … n 中沒有出現在序列中的那個數。

思想:採用異或

思想1:將每個數字看成32個bit位,對每一位,遍歷整個陣列,統計陣列中該位為1的個數,當個數%3不為0時,該位為有效位

最終32位中的有效位組成的數字,即是只出現一次的數字

int find_num(int* nums, int len) 

}if (cnt % 3 != 0)

}return ret;

}

思想2:設定3個變數 個人感覺不是很好想到

int find_num(int* nums, int len)

// 根據題目,最後出現奇數次的,到此為止,只出現了1次

return odd;

}

思路:

eg:,,,

思路:將a~e這5個英文本母組合,看成[00001-11111]區間內的數字

每乙個數字,即對應一套子集

給定乙個非負整數 num。對於 0 ≤ i ≤ num 範圍中的每個數字 i ,計算其二進位制數中的 1 的數目並將它們作為陣列返回。

思路:奇數和偶數分開來看

std::vector calcbits(int num)

for (int i = 1; i <= num; i++)

else

}return res;

}

位運算相關總結

計算機cpu中alu是由邏輯門構成的,非常善於位運算。因此,在程式中使用位運算,經常能夠加快程式執行。另外,掌握一些位運算的相關知識也能增加一些程式設計的樂趣。位運算經常使用到異或運算和與運算。異或運算符合交換律 結合律,它的特點是相同為0,不同為1。與運算是同為1則為1。詳細內容 1 兩個數比較大...

位運算相關總結

按位與運算子 參加運算的兩個資料,按二進位制位進行 與 運算 運算規則 兩位同時為1結果才為 1,否則為 0.負數按補碼形式參加按位與運算 與運算 的特殊用途 1 清零。如果想將乙個單元清零,即使其全部二進位制位為0,只要與乙個各位都為 0的數值相與,結果為 0.2 取乙個數中指定位 方法 找乙個數...

位運算相關題目

面試中會遇到很多與位運算相關的題目,在這裡對位運算的相關知識點和遇到的一些題目總結一下。二進位制的5種位運算 與 或 異或 左移 m 右移 m n表示 把m右移n位 最右邊的n為會被丟棄,如果數值原來是個正數,用0補上最左邊的n位,如果是乙個負數,則最左邊補上n個1 題型一 進製轉換 微軟產品exc...