劍指 Offer 15. 二進位制中1的個數
劍指 Offer 15. 二進位制中1的個數
來源:力扣(LeetCode)
連結:https://leetcode-cn.com/problems/er-jin-zhi-zhong-1de-ge-shu-lcof
著作權歸領釦網路所有。
請實現一個函式,輸入一個整數,輸出該數二進位制表示中 1 的個數。例如,把 9 表示成二進位制是 1001,有 2 位是 1。因此,如果輸入 9,則該函式輸出 2。
示例 1:
輸入:00000000000000000000000000001011
輸出:3
解釋:輸入的二進位制串 00000000000000000000000000001011 中,共有三位為 ‘1’。
示例 2:
輸入:00000000000000000000000010000000
輸出:1
解釋:輸入的二進位制串 00000000000000000000000010000000 中,共有一位為 ‘1’。
示例 3:
輸入:11111111111111111111111111111101
輸出:31
解釋:輸入的二進位制串 11111111111111111111111111111101 中,共有 31 位為 ‘1’。
n & 1 加 n >> 1
//時間複雜度 O(n) = log n,即n轉化為二進指的位數
//第一版
int hammingWeight(uint32_t n) {
uint32_t count = 0;
while (n) {
if (n & 1) {
count++;
}
n = n >> 1;
}
return count;
}
// 簡潔版
int hammingWeight(uint32_t n) {
uint32_t count = 0;
while (n) {
count += n & 1;
n = n >> 1;
}
return count;
}
計數 且 n & = n - 1
//這個複雜度取決與 n中1的個數
int hammingWeight(uint32_t n) {
uint32_t count = 0;
while (n) {
count += 1;
n &= n-1;
}
return count;
}
相關文章
- 【劍指offer】二進位制中1的個數
- 【劍指offer中等部分4】二進位制中1的個數(java)Java
- 二進位制中1的個數
- offer通過--10二進位制中統計1的個數-2
- 1. 二位陣列中的查詢(劍指offer)陣列
- 《劍指offer》:[64]資料流中的中位數
- 位運算(一):二進位制中1的個數
- 位運算--求一個 數二進位制中1的個數
- 求一個整數的二進位制中1的個數
- 【劍指offer】【1】二維陣列中的查詢陣列
- 【刷演算法】二進位制中1的個數演算法
- 題目1513:二進位制中1的個數
- 劍指offer面試題12 列印1到最大的n位數面試題
- 劍指 Offer 列印從1到最大n位數c++C++
- JZ-011-二進位制中 1 的個數
- 求二進位制數中1的個數(程式設計之美)程式設計
- 【c語言】統計一個數二進位制中的1的個數C語言
- 【劍指offer】二維陣列中的查詢陣列
- 劍指Offer-把陣列中的數排成一個最小的數陣列
- 查詢數N二進位制中1的個數(JS版 和 Java版)JSJava
- 劍指Offer積累-JZ1-二維陣列中的查詢陣列
- 劍指Offer 表示數值的字串字串
- 劍指 offer(1) -- 陣列篇陣列
- 二進位制求5個1的格式。。。。
- 劍指offer刷題之路--1.陣列中重複的數字陣列
- 【劍指offer】陣列中只出現一次的數字(1)陣列
- 【劍指offer】字串轉整數字串
- 劍指Offer--陣列中重複的數字陣列
- 《劍指offer》:[51]陣列中的重複數字陣列
- 劍指offer——重建二叉樹二叉樹
- 【劍指offer】二叉樹深度二叉樹
- 二維陣列中的查詢——牛客劍指offer陣列
- 劍指 Offer 04. 二維陣列中的查詢陣列
- 《劍指offer》:[54]表示數值的字串字串
- 【Algorithm】《劍指offer》面試題32----從1到n整數中1出現的次數Go面試題
- 求一個數的二進位制數中所含1的個數的程式碼實現
- Leetcode 劍指 Offer 40. 最小的k個數LeetCode
- 《劍指offer》:[41]陣列中和為S的兩個數陣列