美文网首页
2019-01-20 Day 15

2019-01-20 Day 15

作者: 骚得过火 | 来源:发表于2019-01-20 13:26 被阅读0次

    1.位1的个数
    编写一个函数,输入是一个无符号整数,返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为汉明重量)。

    示例 1:

    输入:00000000000000000000000000001011
    输出:3
    解释:输入的二进制串 `
    00000000000000000000000000001011** 中,共有三位为 '1'。

    示例 2:

    输入:00000000000000000000000010000000
    输出:1
    解释:输入的二进制串 00000000000000000000000010000000 中,共有一位为 '1'。

    示例 3:

    输入:11111111111111111111111111111101
    输出:31
    解释:输入的二进制串 11111111111111111111111111111101 中,共有 31 位为 '1'。

    class Solution {
    public:
        int hammingWeight(uint32_t n) {
            
            
            int count = 0 ;
            while( n > 0)
            {
                if(n & 0x01)
                    count++;
                n >>= 1;
            }
            return count ;
            
            
        }
    };
    

    2.2的幂

    给定一个整数,编写一个函数来判断它是否是 2 的幂次方。

    示例 1:

    输入: 1
    输出: true
    解释: 20 = 1
    示例 2:

    输入: 16
    输出: true
    解释: 24 = 16
    示例 3:

    输入: 218
    输出: false

    class Solution {
    public:
        bool isPowerOfTwo(int n) {
            
            //只能是 1 左移 n位
            if( n <= 0 ) return false;
            
            if( n & (n -1 ) )  //求解1的个数,如果只包含一个1,那么一定是2的幂
                return false;
            else 
                return true;
            
        }
    };
    

    相关文章

      网友评论

          本文标题:2019-01-20 Day 15

          本文链接:https://www.haomeiwen.com/subject/cssxjqtx.html