231 2的幂

题目

给定一个整数,编写一个函数来判断它是否是 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