当前位置:网站首页>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))
简洁明了,高效舒服。
边栏推荐
- Three. JS introduction learning notes 12: the model moves along any trajectory line
- Eye of depth (VII) -- Elementary Transformation of matrix (attachment: explanation of some mathematical models)
- 航运船公司人工智能AI产品成熟化标准化规模应用,全球港航人工智能/集装箱人工智能领军者CIMC中集飞瞳,打造国际航运智能化标杆
- 47_Opencv中的轮廓查找 cv::findContours()
- Shader Language
- Learn good-looking custom scroll bars in 1 minute
- TS typescript type declaration special declaration field number is handled when the key key
- Numpy -- data cleaning
- C Alibaba cloud OSS file upload, download and other operations (unity is available)
- 喜讯!科蓝SUNDB数据库与鸿数科技隐私数据保护管理软件完成兼容性适配
猜你喜欢
Cocos uses custom material to display problems
Syntax of generator function (state machine)
Three. JS introductory learning notes 11:three JS group composite object
It's different for rich people to buy a house
TS as a general cache method
谈谈 SAP iRPA Studio 创建的本地项目的云端部署问题
Eye of depth (VI) -- inverse of matrix (attachment: some ideas of logistic model)
通知Notification使用全解析
Unity3D_ Class fishing project, control the distance between collision walls to adapt to different models
Xingruige database was shortlisted as the "typical solution for information technology application and innovation in Fujian Province in 2021"
随机推荐
Postman generate timestamp, future timestamp
The "go to definition" in VS2010 does not respond or prompts the solution of "symbol not found"
TS typescript type declaration special declaration field number is handled when the key key
Tkinter after how to refresh data and cancel refreshing
Align individual elements to the right under flex layout
Spin animation of Cocos performance optimization
XMIND frame drawing tool
保证接口数据安全的10种方案
Eye of depth (VII) -- Elementary Transformation of matrix (attachment: explanation of some mathematical models)
There are many ways to realize the pause function in JS
20th anniversary of agile: a failed uprising
喜讯!科蓝SUNDB数据库与鸿数科技隐私数据保护管理软件完成兼容性适配
[excelexport], Excel to Lua, JSON, XML development tool
Three. JS introductory learning notes 08:orbitcontrols JS plug-in - mouse control model rotation, zoom in, zoom out, translation, etc
分步式监控平台zabbix
U3D_ Infinite Bessel curve
Introduction to pyGame games
The unity vector rotates at a point
Getting started with webgl (2)
Getting started with webgl (1)