第一题:搜索leetcode 231题
题目描述:
给你一个整数 n,请你判断该整数是否是 2 的幂次方。如果是,返回 true ;否则,返回 false 。
如果存在一个整数 x 使得 n == 2x ,则认为 n 是 2 的幂次方。
示例 1:
输入:n = 1
输出:true
解释:20 = 1
示例 2:
输入:n = 16
输出:true
解释:24 = 16
示例 3:
输入:n = 3
输出:false
示例 4:
输入:n = 4
输出:true
示例 5:
输入:n = 5
输出:false
题目分析:1. 首先我们要考虑0和1,因为这个不能放在循环里,否则循环将无法进行,如果为0,那么返回值为false,如果返回值为1,那么返回值为true。
2. 写入一个for循环,然后定义一个字母k为1,从1开始连续乘2,如果n==k的话,就说明是2的幂。否则,返回false。
代码如下:
bool isPowerOfTwo(int n){
int i;
int k=1;
if(n==1)
{
return true;
}
if(n==0)
{
return false;
}
for(i=1;i<=31;i++)
{
k*=2;
if(n==k)
{
return true;
}
}
return false;
}
注意:这里要看i的范围,因为3的幂、4的幂同解,但i的范围必须要考虑,否则会出现溢出而使代码出错。
第二题:3的幂:
bool isPowerOfThree(int n){
int i;
int k=1;
if(n==1)
{
return true;
}
if(n==0)
{
return false;
}
for(i=1;i<=20;i++)
{
k*=3;
if(n==k)
{
return true;
}
}
return false;
}
第三题:4的幂:
bool isPowerOFour(int n){
int i;
int k=1;
if(n==1)
{
return true;
}
if(n==0)
{
return false;
}
for(i=1;i<=15;i++)
{
k*=4;
if(n==k)
{
return true;
}
}
return false;
}
将持续更新leetcode解题思路......