灵感来源
- 保持更新,努力学习
- python脚本学习
4的幂
解题思路
- 位运算条件:4 的幂的二进制表示中只有一个 1,且位于奇数位(如
4¹ = 100
,4² = 10000
)。 - 模运算条件:4 的幂减 1 后能被 3 整除(数学性质:
4^k - 1 = (2^k - 1)(2^k + 1)
,其中一个因子必为 3 的倍数)。class Solution:def isPowerOfFour(self, n: int) -> bool:# 条件1:n > 0# 条件2:n是2的幂(通过n & (n-1) == 0判断)# 条件3:n减1后能被3整除(4^k - 1是3的倍数)return n > 0 and (n & (n - 1)) == 0 and (n - 1) % 3 == 0
逐行解释
class Solution:def isPowerOfFour(self, n: int) -> bool:# 条件1:n必须为正整数# 4的幂定义为4^k(k为非负整数),因此n必须大于0# 例如:4^0=1, 4^1=4, 4^2=16...condition1 = n > 0# 条件2:n必须是2的幂# 2的幂的二进制表示中只有一个1,例如:2=10, 4=100, 8=1000...# 通过n & (n-1) == 0判断,例如:# - n=4(100) & 3(011) = 000 → 满足条件# - n=6(110) & 5(101) = 100 → 不满足条件condition2 = (n & (n - 1)) == 0# 条件3:n减1后能被3整除# 数学性质:4^k - 1 = (2^k - 1)(2^k + 1),其中一个因子必为3的倍数# 例如:# - 4^1 - 1 = 3 → 3是3的倍数# - 4^2 - 1 = 15 → 15是3的倍数condition3 = (n - 1) % 3 == 0# 同时满足三个条件时,n才是4的幂return condition1 and condition2 and condition3