当前位置:网站首页>Leetcode-231-2的幂
Leetcode-231-2的幂
2022-07-07 13:53:00 【_春天_】
题目描述
给定一个整数,编写一个函数来判断它是否是 2 的幂次方。
解题思路
判断一个整数是否是2的幂次方,可以利用2的幂次方的特性,把数字变成二进制来看。
我们知道,如果一个数字n是2的幂次方,那么它的二进制表示必定首位为1,其余位为0。而n-1的二进制表示中,首位变成了0,其余位是1.
例如,下图代表n=16时的二进制表示:
| …… | 2 4 2^{4} 24 | 2 3 2^{3} 23 | 2 2 2^{2} 22 | 2 1 2^{1} 21 | 2 0 2^{0} 20 |
|---|---|---|---|---|---|
| n=16 | 1 | 0 | 0 | 0 | 0 |
| n=15 | 0 | 1 | 1 | 1 | 1 |
&运算的特点是,相同为1,不同为0
这样的话,n和n-1做和运算(&),每位都是0&1,结果必然是0
也就是说如果n是2的幂次方,则n&(n-1)=0
如果n不是2的幂次方,结果则大于0
因此,利用&运算来判断
代码
代码一:正向计算
先贴上我2min之内完成的代码(laji code
import math
def isPowerOfTwo(self, n):
p = 0
if n <= 0:
return False
while True:
num = math.pow(2, p)
if n < num:
return False
elif n == num:
return True
else:
p += 1
continue
代码二:反向计算
def isPowerOfTwo(self, n):
if n:
while n % 2 == 0 :
n /= 2
return n == 1
return False
代码一和代码二的效率一样(一样低)
代码三:别人家的代码
def isPowerOfTwo(self, n):
if n < 1:
return False
return not (n & (n-1))
简洁明了,高效舒服。
边栏推荐
- A link opens the applet code. After compilation, it is easy to understand
- Strengthen real-time data management, and the British software helps the security construction of the medical insurance platform
- 企业级日志分析系统ELK
- 招标公告:2022年云南联通gbase数据库维保公开比选项目(第二次)比选公告
- Async and await
- Three. JS introductory learning notes 00: coordinate system, camera (temporarily understood)
- Numpy -- epidemic data analysis case
- Detailed explanation of Cocos creator 2.4.0 rendering process
- Shipping companies' AI products are mature, standardized and applied on a large scale. CIMC, the global leader in port and shipping AI / container AI, has built a benchmark for international shipping
- When opening the system window under UE4 shipping, the problem of crash is attached with the plug-in download address
猜你喜欢

【微信小程序】Chapter(5):微信小程序基础API接口

Iterator and for of.. loop

神经网络c语言中的指针是怎么回事

Apache Doris just "graduated": why should we pay attention to this kind of SQL data warehouse?
通知Notification使用全解析

Numpy -- epidemic data analysis case

Enterprise log analysis system elk

UE4 exports the picture + text combination diagram through ucanvasrendertarget2d

AE learning 02: timeline

AE learning 01: AE complete project summary
随机推荐
TS as a general cache method
Spin animation of Cocos performance optimization
2022第四届中国(济南)国际智慧养老产业展览会,山东老博会
Please supervise the 2022 plan
numpy--数据清洗
Unity3D_ Class fishing project, control the distance between collision walls to adapt to different models
Streaming end, server end, player end
Webcodecs parameter settings -avc1.42e01e meaning
Step by step monitoring platform ZABBIX
Three. JS introductory learning notes 08:orbitcontrols JS plug-in - mouse control model rotation, zoom in, zoom out, translation, etc
Unity drawing plug-in = = [support the update of the original atlas]
Summary of knowledge points of xlua hot update solution
Learn good-looking custom scroll bars in 1 minute
PyTorch 中的乘法:mul()、multiply()、matmul()、mm()、mv()、dot()
Iterator and for of.. loop
过度依赖补助,大客户收款难,冲刺“国产数据库第一股”的达梦后劲有多足?
无线传感器网络--ZigBee和6LoWPAN
尤雨溪,来了!
Three. JS introductory learning notes 10:three JS grid
postman生成时间戳,未来时间戳