LeetCode--342--4的幂】的更多相关文章

342. 4的幂 给定一个整数 (32 位有符号整数),请编写一个函数来判断它是否是 4 的幂次方. 示例 1: 输入: 16 输出: true 示例 2: 输入: 5 输出: false 进阶: 你能不使用循环或者递归来完成本题吗? class Solution { public boolean isPowerOfFour(int num) { int x = 0x55555555; return (num > 0)&&((num&(num-1))==0)&((nu…
描述 给定一个整数 (32 位有符号整数),请编写一个函数来判断它是否是 4 的幂次方. 示例 1: 输入: 16输出: true示例 2: 输入: 5输出: false 进阶:你能不使用循环或者递归来完成本题吗? 解析 32位数如果是4的幂,那么只有奇数位有且只有一个1,偶数位都是0.判断条件为: 1. 与0xaaaaaaaa做与运算结果为0.(a=1010) 2. num & (num - 1) == 0,说明只有1位的  1 代码 public boolean isPowerOfFour(…
1. 题目描述 给定一个整数 (32 位有符号整数),请编写一个函数来判断它是否是 4 的幂次方. 示例 1: 输入: 16输出: true示例 2: 输入: 5输出: false 2. 思路 参考:https://blog.csdn.net/weixin_40163242/article/details/97396427 . 3.代码 class Solution: def isPowerOfFour(self, num: int) -> bool: temp = num & (num -…
LeetCode 231.2的幂 题目: 给定一个整数,编写一个函数来判断它是否是 2 的幂次方. 算法: 若一个数是2的幂次的话定会有n & (n - 1) == 0这个关系成立 所以直接用位运算可做. 这个题目实际上是判断n对应的二进制中时候只有一个1 代码: class Solution { public: bool isPowerOfTwo(int n) { if(n <= 0) { return false; } return ((n & (n - 1)) == 0) ?…
题目描述: 给定一个整数 (32位有符整数型),请写出一个函数来检验它是否是4的幂. 示例:当 num = 16 时 ,返回 true . 当 num = 5时,返回 false. 问题进阶:你能不使用循环/递归来解决这个问题吗? 题目分析: 如231题同样思路,还是通过位操作来解决这道 首先判断下输入为0和负数的情况 然后分析4的幂的特点0,4,16 化为二进制0,0100,00010000 跟求2的幂不同的是此处少了2,8 化为2进制   ,0010,00001000 0 0 0 0 0 1…
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? 题目标签:Bit Manipulation 这道题目让我们判断一个数字是不是4的…
给定一个整数,写一个函数来判断它是否是 3 的幂次方. 示例 1: 输入: 27 输出: true 示例 2: 输入: 0 输出: false 示例 3: 输入: 9 输出: true 示例 4: 输入: 45 输出: false 进阶: 你能不使用循环或者递归来完成本题吗? 思路 循环/3看最后是不是等于1就好了 代码 class Solution(object): def isPowerOfThree(self, n): """ :type n: int :rtype:…
给定一个整数 (32 位有符号整数),请编写一个函数来判断它是否是 4 的幂次方. 示例 1: 输入: 16 输出: true 示例 2: 输入: 5 输出: false 进阶:你能不使用循环或者递归来完成本题吗? 这题本质上还是一个数学问题,考察的是二进制的一些操作.因为4的幂一定是2的幂,且二进制后,其1的位置一定出现在奇数位. 如 4: 0100  16:10000 所以思路很清晰了.首先判断是不是2的幂,然后再判断其1的位置是不是在奇数位.判断的方法是将这个数与 0x55555555 相…
给定一个整数,编写一个函数来判断它是否是 2 的幂次方. 示例 1: 输入: 1 输出: true 解释: 20 = 1 示例 2: 输入: 16 输出: true 解释: 24 = 16 示这题是考察数学的问题了.用位运算可以快速解决完问题.2的幂的二进制形式永远是 10 100 1000 10000的形式出现的,而通过二进制中与的特性可以得知 10 & 01 = 00,100 & 011 =000 那么就可以通过n与n-1的与运算,便捷得得到答案. 代码如下: class Soluti…
给定一个整数,写一个函数来判断它是否是 3 的幂次方. 示例 1: 输入: 27 输出: true 示例 2: 输入: 0 输出: false 示例 3: 输入: 9 输出: true 示例 4: 输入: 45 输出: false 这题比较简单,循环或者递归可以解决问题.但是也可以使用对数求解的方法.这就输于数学的范畴了.由于是新手一开始没有想到.不过循环的做法时间比较快,也就没有继续深究下去了. 参考博客可以看: https://blog.csdn.net/hy971216/article/d…