LeetCode|Day22|231. 2 的幂|Python刷题笔记
LeetCode|Day22|231. 2 的幂|Python刷题笔记
🗓️ 本文属于【LeetCode 简单题百日计划】系列
👉 点击查看系列总目录 >>
📌 题目简介
题号:231. 2 的幂
难度:简单
题目链接:点击跳转
🧾 题目描述(简要)
给定一个整数 n
,判断它是否是 2 的幂。
你必须使用 仅用位运算的解法。
示例:
输入:n = 16
输出:true输入:n = 18
输出:false
💡 解法:位运算 n & (n - 1)
class Solution:def isPowerOfTwo(self, n: int) -> bool:return n > 0 and (n & (n - 1)) == 0
🧠 我的理解
2 的幂
在二进制中只有一个1
,例如:8 = 1000
;n & (n - 1)
会将最右边的1
变成0
;- 所以如果结果为 0,说明
n
是 2 的幂; - 时间复杂度 O(1),空间复杂度 O(1)。
📌 基础语法复习:
&
是按位与运算符;(n & (n - 1)) == 0
是判断 2 的幂的经典写法;- 注意添加
n > 0
条件,防止负数和 0。