1.1. 题目

1.1.1. 2的幂

给定一个整数,编写一个函数来判断它是否是 2 的幂次方。

示例 1:

输入: 1

输出: true
解释: 20 = 1

示例 2:

输入: 16
输出: true
解释: 24 = 16

示例 3:

输入: 218
输出: false



1.1.2. 题解:

  • 2的幂肯定能被2整除,但是能被2整除的并不一定都是2的幂

1.1.3. 思路:

  • 常规操作就是暴力解法,直接无限除以2,直到最后结果等于2为止
  • 可以用位运算,这个我是看题解的,一行代码就可以了
2^x n n - 1 n & (n - 1)
2^0 0001 00000000 (0001) & (0000) == 0
2^1 0010 0001 (0010) & (0001) == 0
2^2 0100 0011 (0100) & (0011) == 0
2^3 1000 0111 (1000) & (0111) == 0

1.1.4. 代码:

点击显示
 func isPowerOfTwo(n int) bool {
     return n > 0 && n & (n-1) == 0
 }

代码

results matching ""

    No results matching ""