您的位置:首页 > 其它

leetcode_Power of Two

2015-08-07 08:31 302 查看
描述:

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

思路:

1.很有意思的一道题目,大致有三种方法:

2.第一种对num进行向右移位,每次移动一个Bit位并和0x1作&运算,共需移位31次,统计num中1出现的次数,有且仅出现一次的话就返回true

3.第二种方法是令tempNum=1,让num和tempNum作&运算,每次移位结束将tempNum左移位,工需移位31次,1有且仅出现一次则返回true

4.第三种方法有点惨无人道,boolean flag=((num&(num-1))==0);flag为真的话则返回true

代码:

仅贴出第三种方法的代码:

public boolean isPowerOfTwo(int n)
{
if(n<=0)
return false;
return (n&(n-1))==0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: