闯关leetcode——231. Power of Two
大纲
- 题目
- 地址
- 内容
- 解题
- 代码地址
题目
地址
https://leetcode.com/problems/power-of-two/description/
内容
Given an integer n, return true if it is a power of two. Otherwise, return false.
An integer n is a power of two, if there exists an integer x such that n == 2x.
Example 1:
Input: n = 1
Output: true
Explanation: 20 = 1
Example 2:
Input: n = 16
Output: true
Explanation: 24 = 16
Example 3:
Input: n = 3
Output: false
Constraints:
- -231 <= n <= 231-1
解题
这题就是要检测一个数是否是2的幂次方。
对这个数,我们要拆分来看。
如果它小于或者等于0,则它一定不是2的幂次方;
如果它大于0,则需要它的二进制中(除了标志位)只能有一个1,比如2的二进制是0x10、4的二进制是0x100、8的二进制是0x1000。检测只有1个1的最简单方法是n&(n-1)等于0。
代码地址
https://github.com/f304646673/leetcode/blob/main/231-Power-of-Two/cplusplus/src/solution.hpp