Python位運算 338 位元位計數

2021-10-20 22:47:29 字數 553 閱讀 2162

參考鏈結

又是刷題找演算法盲點的時候了

題目在此

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

示例 1:

輸入: 2

輸出: [0,1,1]

示例 2:

輸入: 5

輸出: [0,1,1,2,1,2]

高階:要求演算法的空間複雜度為o(n)。

你能進一步完善解法嗎?要求在c++或任何其他語言中不使用任何內建函式(如 c++ 中的 __builtin_popcount)來執行此操作。

官方的解答有一點不是很懂:

x &(x-1)#其實就是邏輯and運算

ones+=1

qa 在二進位制數里面對-1產生了什麼樣的影響? 為什麼這樣迴圈就能使得得出1的結果呢

綜上可以知道,這樣的操作實際上是在從右往左逐個逐個消去1

leetcode 338 位元位計算(位運算)

目錄 題目描述 lowbit函式介紹 題目解析 c 完整 題目 力扣 leetcode 給定乙個非負整數 num。對於 0 i num 範圍中的每個數字 i 計算其二進位制數中的 1 的數目並將它們作為陣列返回。示例 1 輸入 2 輸出 0,1,1 示例 2 輸入 5 輸出 0,1,1,2,1,2 ...

338 位元位計數

給定乙個非負整數num。對於0 i num範圍中的每個數字i,計算其二進位制數中的 1 的數目並將它們作為陣列返回。示例 1 輸入 2輸出 0,1,1 示例 2 輸入 5輸出 0,1,1,2,1,2 高階 要求演算法的空間複雜度為o n 你能進一步完善解法嗎?要求在c 或任何其他語言中不使用任何內建...

338 位元位計數

給定乙個非負整數num。對於0 i num範圍中的每個數字i,計算其二進位制數中的 1 的數目並將它們作為陣列返回。示例 1 輸入 2 輸出 0,1,1 示例 2 輸入 5輸出 0,1,1,2,1,2 高階 要求演算法的空間複雜度為o n 你能進一步完善解法嗎?要求在c 或任何其他語言中不使用任何內...