leetcode-338. Counting Bits

来源:互联网 发布:淘宝网太阳镜 编辑:程序博客网 时间:2024/06/05 11:58

考察点:dp,bit运算&;
思路:重点是理解i&(i-1)是将数字 i 的二进制格式下最右边的1转换成0;dp[i]的含义是数字i的1bit数目,因此dp[i] = dp[i&(i-1)] + 1;就好理解了。
C++代码:

class Solution {public:    vector<int> countBits(int num) {        vector<int> ret(num+1, 0);        for (int i=1; i<=num; i++) {            ret[i] = ret[i&(i-1)] + 1;        }        return ret;    }};
0 0
原创粉丝点击