当前位置:网站首页>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))
简洁明了,高效舒服。
边栏推荐
- Learn good-looking custom scroll bars in 1 minute
- Three. JS introductory learning notes 07: external model import -c4d to JSON file for web pages -fbx import
- 保证接口数据安全的10种方案
- 2022山东智慧养老展,适老穿戴设备展,养老展,山东老博会
- Limit of total fields [1000] in index has been exceeded
- Syntax of generator function (state machine)
- XMIND frame drawing tool
- 持续创作,还得靠它!
- Mesh merging under ue4/ue5 runtime
- Particle effect for ugui
猜你喜欢
![[wechat applet] Chapter (5): basic API interface of wechat applet](/img/63/e819113c7c93e273525bc850892972.png)
[wechat applet] Chapter (5): basic API interface of wechat applet

保证接口数据安全的10种方案

Unity3D_ Class fishing project, bullet rebound effect is achieved

Three. JS introductory learning notes 18: how to export JSON files with Blender

Ue4/ue5 multi thread development attachment plug-in download address

Dotween -- ease function

Three. JS introductory learning notes 08:orbitcontrols JS plug-in - mouse control model rotation, zoom in, zoom out, translation, etc

融云斩获 2022 中国信创数字化办公门户卓越产品奖!

强化实时数据管理,英方软件助力医保平台安全建设

Streaming end, server end, player end
随机推荐
分步式監控平臺zabbix
10 schemes to ensure interface data security
Please supervise the 2022 plan
Three. JS introductory learning notes 03: perspective projection camera
招标公告:盘锦市人民医院盘锦医院数据库维保项目
Enterprise log analysis system elk
C4D learning notes 1- animation - animation key frames
持续创作,还得靠它!
深度之眼(六)——矩阵的逆(附:logistic模型一些想法)
Three. JS introductory learning notes 04: external model import - no material obj model
星瑞格数据库入围“2021年度福建省信息技术应用创新典型解决方案”
OpenGL common functions
asyncio 概念和用法
Shader_ Animation sequence frame
Three. JS introductory learning notes 08:orbitcontrols JS plug-in - mouse control model rotation, zoom in, zoom out, translation, etc
企业级日志分析系统ELK
Write sequence frame animation with shader
Three. JS introductory learning notes 00: coordinate system, camera (temporarily understood)
A wave of open source notebooks is coming
Particle effect for ugui