帮企业外卖网站做推,重庆建工网,做宣传的网站,廊坊网站建设文章目录1. 题目2. 解题2.1 通用解法2.2 找规律1. 题目
给定一个整数 (32 位有符号整数)#xff0c;请编写一个函数来判断它是否是 4 的幂次方。
示例 1:
输入: 16
输出: true示例 2:
输入: 5
输出: false进阶#xff1a; 你能不使用循环或者递归来完成本题吗#xff1f; …
文章目录1. 题目2. 解题2.1 通用解法2.2 找规律1. 题目
给定一个整数 (32 位有符号整数)请编写一个函数来判断它是否是 4 的幂次方。
示例 1:
输入: 16
输出: true示例 2:
输入: 5
输出: false进阶 你能不使用循环或者递归来完成本题吗
来源力扣LeetCode 链接https://leetcode-cn.com/problems/power-of-four 著作权归领扣网络所有。商业转载请联系官方授权非商业转载请注明出处。
2. 解题
相关题目LeetCode 231. 2的幂 LeetCode 338. 比特位计数2进制1的个数
2.1 通用解法
class Solution {
public:bool isPowerOfFour(int n) {if(n 1)return false;while(n%4 0)n / 4;return n 1;}
};2.2 找规律
十进制二进制40 1141 410042 161 000043 64100 0000
发现4的整数次幂只有一个1跟2的整数次幂一致且1在奇数位
在C/C 三种进制前缀:
二进制: 0b八进制: 0十六进制: 0x
设计一个只在奇数位或者只在偶数位为1的二进制数进行位运算判断
class Solution {
public:bool isPowerOfFour(int n) {if(n 1)return false;int k 0b10101010101010101010101010101010;//32位if((n(n-1)) ! 0)//先判断是否为2的幂只有一个bit为1return false;if((nk) 0)return true;return false;}
};or
class Solution {
public:bool isPowerOfFour(int n) {if(n 1)return false;int k 0b01010101010101010101010101010101;if((n(n-1)) ! 0)//先判断是否为2的幂只有一个bit为1return false;if((nk) n)return true;return false;}
};如果图方便可以记住那个魔法数字不过感觉没必要记住二进制形式就好了