LintCode-142.O(1)时间检测2的幂次

题目

描述

用 O(1) 时间检测整数 n 是否是 2 的幂次。

样例

n=4,返回 true;
n=5,返回 false.

解答

思路

  1. 大于零。
  2. 2的整数幂次的二进制表示都是0...010...0,其减1后二进制表示为0...001...1,两个数按位取且(&)等于零。

代码

class Solution {
    /*
     * @param n: An integer
     * @return: True or false
     */
    public boolean checkPowerOf2(int n) {
        // write your code here
        return (n>0)&&((n&(n-1))==0); 
    }
};
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 网站乱码问题我们会经常碰到,大多见于非英文的中文字符或其他字符乱码,而且,这类问题常常是因为编码方式问题,主要原因...
    波段顶底阅读 8,212评论 1 9
  • 3.10 69.给出一棵二叉树,返回其节点值的层次遍历(逐层从左往右访问) 二叉树的层次遍历样例给一棵二叉树 {3...
    mytac阅读 4,738评论 3 3
  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 13,848评论 6 13
  • 文/鸿运 耕牛号角染红发 播下春风萌柳芽 春潮澎湃燕衔泥 唯恐桃开无芳华
    HONGYUNDANGTOU阅读 845评论 5 8
  • 昨天因为一个访谈知道了一部电影,在夜色朦胧之下自己挂着耳机看完了。早上醒来又遇见了一部类似的电影,我又忍不住去看了...
    TinKaiMui_阅读 4,237评论 0 0