Leetcode NO.231 Power of Two

原创 2015年07月10日 07:12:59

本题题目要求如下:

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

很简单的要求,不过一开始我居然没有想到解决问题的办法,用一种很傻的方法做的,后来感觉不对,看了提示,用位运算解决,才恍然大悟,用简单方法解决了问题。。

power of 2的数看十进制,没有什么特别的地方,但是转换成二进制之后,都是100000的形式,最高位是1,其余位都是0,然后,这个数减1,就变为011111,最高位(已消失)为0,之后都是1,所以这两个数按位与(&)则变为0000000000.。。根据这个特性,可以解决这道题,代码如下:

class Solution {
public:
    bool isPowerOfTwo(int n) {
        if (n <= 0) {
            return false;
        }
        return !(n & (n-1));
    }
};

更新一种更为传统的做法:

public:
    bool isPowerOfTwo(int n) {
        if (n <= 0) {
            return false;
        }
        while ((n >> 1) << 1 == n) {
            n >>= 1;
        }
        return (n == 1) ? true: false;
    }
};


LeetCode No.231 Power of Two

LeetCode No.231 Power of Two
  • woshihuangjianwei
  • woshihuangjianwei
  • 2016年11月11日 19:18
  • 104

LeetCode 231: Power of Two

Given an integer, write a function to determine if it is a power of two. 判断一个数是否是2的幂,判断方法主要依据2的...
  • sunao2002002
  • sunao2002002
  • 2015年07月06日 18:34
  • 3843

leetcode 231: Power of Two

leetcode 231: Power of Two python, java, c++
  • xudli
  • xudli
  • 2015年07月07日 05:01
  • 10500

leetcode 231. Power of Two 判断是否为2的幂 Java

231. Power of Two Given an integer, write a function to determine if it is a power of two. Credit...
  • chenchaofuck1
  • chenchaofuck1
  • 2016年04月23日 16:38
  • 1336

231. Power of Two [easy] (Python)

题目链接https://leetcode.com/problems/power-of-two/题目原文 Given an integer, write a function to determin...
  • coder_orz
  • coder_orz
  • 2016年05月05日 14:47
  • 1117

随机的力量(1) - The power of random two choices

我们都知道对于哈希函数来说,有一个绕不开的话题就是冲突。 当N个object通过随机函数映射到N个桶的时候,可能由于冲突而出现Hash(x) = Hash(y)的情况。经典的处理哈希冲突的方法包括链表...
  • u010872254
  • u010872254
  • 2015年11月01日 00:43
  • 889

leetcode power(x, n)

问题描述: double power(double x, int n)的计算, n 可以是正也可以是负。 问题分析: 注意计算效率,避免重复计算。 伪代码: double power(double x...
  • ych_ding
  • ych_ding
  • 2014年12月19日 19:40
  • 544

【LeetCode】LeetCode——第1题:Two Sum

Given an array of integers, find two numbers such that they add up to a specific target number. The ...
  • hujingshuang
  • hujingshuang
  • 2016年01月04日 17:01
  • 1472

LeetCode | Add Two Numbers

题目: You are given two linked lists representing two non-negative numbers. The digits are stored in...
  • lanxu_yy
  • lanxu_yy
  • 2013年09月14日 17:06
  • 15469

[LeetCode] 002. Add Two Numbers (Medium) (C++/Java/Python)

002.Add_Two_Numbers (Medium)
  • hcbbt
  • hcbbt
  • 2015年02月27日 12:43
  • 5642
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Leetcode NO.231 Power of Two
举报原因:
原因补充:

(最多只允许输入30个字)