思想:使用異或,遍歷陣列,兩兩異或,即是最終的答案
給定乙個包含 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...