博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[LeetCode]Power of Two
阅读量:2235 次
发布时间:2019-05-09

本文共 642 字,大约阅读时间需要 2 分钟。

解题思路:
如果一个数是2的次方数,那么这个数的二进制表示中,只有最高位是1,其余都是0;那么,我们就可以统计二进制是1的个数n,cnt大于1则false,cnt==1则true
1,先决条件:n>0, 如果n<=0, 这题就没卵用
2,不变式:在循环中执行 cnt += n&1,n右移一位
3,结束条件:n==0

4,临界条件:(n>0, 如果n<=0, 这题就没卵用) 

class Solution {public:    bool isPowerOfTwo(int n) {        int cnt = 0;        while (n > 0){            cnt += (n & 1);            n >>= 1;        }        return cnt == 1;    }};

解法二:
n如果是2的次方数,那么n的二进制表示中,只有最高位为1,而n-1的二进制表示中,只有第一位为0,其余都为1
这两个数做与运算,结果已定为零
一句话就能搞定
1,先决条件:n > 0
2,不变式:(n & (n-1))
3,临界条件:n > 0
// Error:(n & (n-1)) 为false时返回true,忘记在前面加 ! 

class Solution {public:    bool isPowerOfTwo(int n) {        return (n > 0) && !(n & (n-1));    }};

转载地址:http://qcpbb.baihongyu.com/

你可能感兴趣的文章
attention 机制入门
查看>>
手把手用 IntelliJ IDEA 和 SBT 创建 scala 项目
查看>>
GAN 的 keras 实现
查看>>
AI 在 marketing 上的应用
查看>>
Logistic regression 为什么用 sigmoid ?
查看>>
Logistic Regression 为什么用极大似然函数
查看>>
SVM 的核函数选择和调参
查看>>
LightGBM 如何调参
查看>>
用 TensorFlow.js 在浏览器中训练神经网络
查看>>
cs230 深度学习 Lecture 2 编程作业: Logistic Regression with a Neural Network mindset
查看>>
梯度消失问题与如何选择激活函数
查看>>
为什么需要 Mini-batch 梯度下降,及 TensorFlow 应用举例
查看>>
为什么在优化算法中使用指数加权平均
查看>>
初探Java设计模式4:一文带你掌握JDK中的设计模式
查看>>
初探Java设计模式5:一文了解Spring涉及到的9种设计模式
查看>>
Java集合详解1:一文读懂ArrayList,Vector与Stack使用方法和实现原理
查看>>
Java集合详解2:一文读懂Queue和LinkedList
查看>>
Java集合详解3:一文读懂Iterator,fail-fast机制与比较器
查看>>
Java集合详解4:一文读懂HashMap和HashTable的区别以及常见面试题
查看>>
Java集合详解5:深入理解LinkedHashMap和LRU缓存
查看>>