您的位置:首页 > 编程语言 > C语言/C++

Power of Four

2016-07-14 14:14 204 查看
一、问题描述

Given an integer (signed 32 bits), write a function to check whether it is a power of 4.

Example:

Given num = 16, return true. Given num = 5, return false.

Follow up: Could you solve it without loops/recursion?

二、思路

将输入数变为32位进行判断,找到4的乘方的规律。即满足4的乘方的数的特征为:

1、32位中只有一位是1,其余位全部是0;

2、是1的这一位必须是2的整数倍,如4的0次方1,4的一次方0100,4的二次方00010000,以此类推(前面的0省略)

三、代码

class Solution {
public:
bool isPowerOfFour(int num) {
if(num <= 0) return false;
int k[32] = {0};
int i = 0;
while(num){
k[i++] = num % 2;
num /= 2;
}
int cnt = 0;
for(int j = 0;j < 32;++j){
if(k[j] == 1)
cnt++;
if(k[j] == 1 && j % 2 == 1 || cnt > 1)
return false;
}
return true;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode C++