LeetCode题解:Power of Two

题目链接: ## Pow of Two


题目描述:

Given an integer, write a function to determine if it is a power of two.


题目解释:

给定一个整数,实现一个函数,来判断这个整数是否是2的次幂。
比如 8 为 2 的 3次幂, 5 则不是 2 的次幂。


解题方案:

如果一个数能一路被2整除,直到变成数字1,那么这个数就是2的次幂,例如16是2的次幂,那么16可以一直被2整除直到除到1。
这里我们需要注意边界条件:负数和零都不是2的次幂,可以直接排除掉
在除2过程中,只要有一次不能被2整除,那么这个数就不是2的次幂


代码的实现过程就比较简单了,先排除边界条件,然后迭代除2,对于能整除到最后的数返回TRUE,对于中间不能被2整除的数字直接返回false即可。接下来咱们看具体的实现代码:

bool isPowerOfTwo(int n)
{
    if (n <= 0 )
    {
            return false;
    }
    if (n == 1)
    {
        return true;
    }
    while(true)
    {
        if (n%2 == 1 && n != 1)
        {
            return false;
        }
        else
        {
            n /= 2;

            if (n == 1)
            {
                return true;
            }
        }
    }
}

这个题目比较简单,一个循环的应用,注意边界条件的处理即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值