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省略)
三、代码
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; } };
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- 关于指针的一些事情
- c++ primer 第五版 笔记前言
- share_ptr的几个注意点
- Lua中调用C++函数示例
- Lua教程(一):在C++中嵌入Lua脚本
- Lua教程(二):C++和Lua相互传递数据示例
- C++联合体转换成C#结构的实现方法
- C++高级程序员成长之路
- C++编写简单的打靶游戏
- C++ 自定义控件的移植问题
- C++变位词问题分析
- C/C++数据对齐详细解析
- C++基于栈实现铁轨问题
- C++中引用的使用总结
- 使用Lua来扩展C++程序的方法
- C++中调用Lua函数实例
- Lua和C++的通信流程代码实例
- C++的template模板中class与typename关键字的区别分析
- C与C++之间相互调用实例方法讲解