题目
- 题号:231
- 难度:简单
- https://leetcode-cn.com/problems/power-of-two/
给定一个整数,编写一个函数来判断它是否是 2 的幂次方。
示例 1:
输入: 1
输出: true
解释: 2^0 = 1
示例 2:
输入: 16
输出: true
解释: 2^4 = 16
示例 3:
输入: 218
输出: false
实现
第一种:利用位运算的方法
思路: 利用"异或"操作的性质。
A: 00 00 11 00
A^A: 00 00 00 00
C# 语言
- 状态:通过
- 1108 / 1108 个通过测试用例
- 执行用时: 36 ms, 在所有 C# 提交中击败了 100.00% 的用户
- 内存消耗: 14.7 MB, 在所有 C# 提交中击败了 100.00% 的用户
public class Solution
{
public bool IsPowerOfTwo(int n)
{
if (n < 0)
return false;
for (int i = 0; i < 32; i++)
{
int mask = 1 << i;
if ((n ^ mask) == 0)
return true;
}
return false;
}
}
Python 语言
- 执行结果:通过
- 执行用时:44 ms, 在所有 Python3 提交中击败了 51.91% 的用户
- 内存消耗:13.6 MB, 在所有 Python3 提交中击败了 6.25% 的用户
class Solution:
def isPowerOfTwo(self, n: int) -> bool:
for i in range(32):
mask = 1 << i
if n ^ mask == 0:
return True
return False