剑指Offer Ⅱ 003.二进制加法(力扣剑指Offer专项突击版——整数_3)
生活随笔
收集整理的這篇文章主要介紹了
剑指Offer Ⅱ 003.二进制加法(力扣剑指Offer专项突击版——整数_3)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目
給定一個非負整數 n ,請計算 0 到 n 之間的每個數字的二進制表示中 1 的個數,并輸出一個數組。
示例 1:
輸入: n = 2
輸出: [0,1,1]
解釋:
0 --> 0
1 --> 1
2 --> 10
題解
- 題解一
本體最直觀的想法是,求每個數的二進制位個數,如下:`
時間復雜度n*logn
- 題解二 動歸思路,參考力扣官方題解
// leecode官方題解 最低設置位
// 最低設置位定義為整數x的最低為1的位置 如10(1010)的最低設置位為2
// 令y = x & (x - 1),則y變為1000,相當于將x的最低設置位置0
// 可以發現 x的比特位比y大一,且x > y,由此推出等式 bits[i] = bits[i & (i - 1)] + 1;
總結
以上是生活随笔為你收集整理的剑指Offer Ⅱ 003.二进制加法(力扣剑指Offer专项突击版——整数_3)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 剑指Offer Ⅱ 001. 整数除法(
- 下一篇: 剑指Offer Ⅱ 005.单词长度的最