1、题目名称
Power of Two (2的幂)
2、题目地址
https://leetcode.com/problems/power-of-two
3、题目内容
英文:Given an integer, write a function to determine if it is a power of two.
中文:给出一个数字,判断它是否是2的乘方
4、解题方法1
最容易想到的方法,就是用输入的数字不断模除以2,为1则返回否,如果为0则继续做模除运算。
Java代码如下:
/**
* 功能说明:LeetCode 231 - Power of Two
* 开发人员:Tsybius2014
* 开发时间:2015年8月22日
*/
public class Solution {
/**
* 判断整数n是否为2的幂
* @param n 被考察数
* @return
*/
public boolean isPowerOfTwo(int n) {
if (n <= 0) {
return false;
}
while (n != 1) {
if (n % 2 != 0) {
return false;
} else {
n /= 2;
}
}
return true;
}
}
4、解题方法2
一个更简单的方法是使用位运算完成:
/**
* 功能说明:LeetCode 231 - Power of Two
* 开发人员:Tsybius2014
* 开发时间:2015年8月22日
*/
public class Solution {
/**
* 判断整数n是否为2的幂
* @param n 被考察数
* @return
*/
public boolean isPowerOfTwo(int n) {
return n > 0 && (n & (n-1)) == 0;
}
}
END
本文介绍了两种有效的算法来判断一个整数是否为2的幂。第一种方法通过不断地除以2来判断,直到剩余部分不为0或变为1。第二种方法使用位运算,检查整数大于0且其二进制表示中只有一个1位。
545

被折叠的 条评论
为什么被折叠?



