【Python3】【力扣题】231. 2 的幂

2023-11-07 21:45
文章标签 python3 231 力扣题

本文主要是介绍【Python3】【力扣题】231. 2 的幂,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

【力扣题】题目描述:

此题:n为整数(32位有符号整数),x为整数。

2 的幂次方都大于0。若幂为负数,则0<n<1,n不为整数。

因此,n为正整数,x为0和正整数。

若二进制表示,则n的二进制只有1位是1,其余均为0。

最大2的幂为2^{30}

【Python3】代码:

1、解题思路:递归。依次n/2,判断余数是否为0,最终n为1,则n是2的幂。

知识点:递归:在函数中调用函数本身(需有退出条件,否则无限循环)。

class Solution:def isPowerOfTwo(self, n: int) -> bool:if n <= 0: return Falseif n == 1: return Trueif n % 2 == 1: return Falsereturn self.isPowerOfTwo(n / 2)

2、解题思路:循环。依次n/2,判断余数是否为0,最终n为1,则n是2的幂。

class Solution:def isPowerOfTwo(self, n: int) -> bool:if n <= 0: return Falsewhile n != 1 and n % 2 == 0:n = n / 2return n == 1 

3、解题思路:二进制表示。n的二进制只有1位为1。

(3-1)判断二进制中是否只有1位为1,若是,则n是2的幂。

知识点:bin(...):转为二进制字符串,即“0bxxx”。

              序列.count(...):统计指定元素在序列(字符串、列表等)中有多少个。

class Solution:def isPowerOfTwo(self, n: int) -> bool:return n > 0 and bin(n).count("1") == 1

(3-2)二进制与运算。

二进制与运算:两个二进制,相对应的每一位进行与运算。

1 & 1 = 1,1 & 0 = 0,0 & 0 = 0

① n 和 (n-1) 进行二进制与运算,若结果为0,则n是2的幂。

例如:假设8位二进制,最高位为符号位。n=8,二进制00001000,n-1为00000111,00001000&00000111=00000000。

class Solution:def isPowerOfTwo(self, n: int) -> bool:return n > 0 and (n & (n-1)) == 0

② n 和 -n 进行二进制与运算,若结果为n,则n是2的幂。

-n的二进制表示:n的补码(反码+1),即(有符号位)最高位符号位不变,其余位全部取反再加1(即最高位不变,最低位的1以后不变,最高位和最低位1之间的位取反)。

例如:假设8位二进制,最高位为符号位。n=8,二进制00001000,-n为01111000,00001000&01111000=00001000。

class Solution:def isPowerOfTwo(self, n: int) -> bool:return n > 0 and (n & -n) == n

4、解题思路:范围是32位有符号整数,将二进制1依次左移一位,判断是否与n相等,若是,则n是2的幂。

知识点:range(31):从0到30的数组(不含31),即0、1、2...30。【最高位为符号位】

class Solution:def isPowerOfTwo(self, n: int) -> bool:for i in range(31):if n == (1 << i):return Truereturn False

5、解题思路:判断是否是最大2的幂的约数(即2^{30}能把n整除),若是,则n是2的幂。

整数a除以整数b(b≠0),除得商为整数,没有余数,则a是b的倍数,b是a的约数。

 知识点:2 ** 30:2^{30}

               1 << 30:左移,即1左移30位,为2^{30}

class Solution:def isPowerOfTwo(self, n: int) -> bool:return n > 0 and (2 ** 30) % n == 0# 或者return n > 0 and (1 << 30) % n == 0


 

6、解题思路:math模块log2()方法。判断结果是否是integer整数。

知识点:math.log2(...):返回以2为底的对数。结果是浮点数。

              int(...):转为整数。

              float.is_integer():判断浮点数是否是integer整数。

例如:math.log2(8) 结果为3.0。【3.0是integer整数,和3的值相等。而3.1不是integer整数】

class Solution:def isPowerOfTwo(self, n: int) -> bool:import mathreturn n > 0 and math.log2(n) == int(math.log2(n))# 或者return n > 0 and math.log2(n).is_integer()

这篇关于【Python3】【力扣题】231. 2 的幂的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/366459

相关文章

Python3 BeautifulSoup爬虫 POJ自动提交

POJ 提交代码采用Base64加密方式 import http.cookiejarimport loggingimport urllib.parseimport urllib.requestimport base64from bs4 import BeautifulSoupfrom submitcode import SubmitCodeclass SubmitPoj():de

Python安装:Mac 使用brew 安装Python2 和 Python3

安装python ## python2brew install python ## python3brew install python3 出现错误 Error: An unexpected error occurred during the `brew link` stepThe formula built, but is not symlinked into /usr/loc

Python: #!/usr/bin/python3 #!/usr/bin/env python3

只能放在第一行,第二行就没有效果了。 1. 路径不同 #!/usr/bin/python3&& #!/usr/bin/env python3写在脚本语言第一行的目的是 想要以什么可执行程序去运行这个文件中的代码。 #!/usr/bin/python3是告诉操作系统执行这个脚本的时候,调用/usr/bin下的python3解释器; #!/usr/bin/env python3这种用法是为了

Linux搭建Python3、Django环境

开发十年,就只剩下这套架构体系了! >>>    好久没写了,朋友们,我又回来了。 安装Python3 Python全部版本下载地址:         https://www.python.org/ftp/ 解决RedHat,使用Python3退格出现乱码问题:         yum -y install readline-devel.x86_64 下载Python3:

ubuntu 安装python3 教程

本篇教程,主要介绍如何在Ubuntu上安装python3教程。 1、查看是否有python 在安装前,首先看看自己系统上,是否存在python环境,可能有些系统,默认就安装过python,如果已经有python了,可以直接跳过安装教程。 2、安装步骤 apt update && apt install -y python3 python3-pip

【python requests警告】python3.x requests库取消ssl验证,InsecureRequestWarning: Unverified HTTPS request is be

警告信息: InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warni

设置python4delphi支持python3.X

看不懂也要跟踪下,哪哪出问题了,嗯,是python的Py_Initialize()出问题,这行代码   Py_Initialize             := Import('Py_Initialize'); 咋办呢,万能的互联网啊(哪天不能上网,那是不是也活的差不多了) 网上说,一般出这个问题,是python的路径出问题了,系统环境变量里找不着python了,哦,是这样,但是我不能设置p

win7系统安装python2和python3

之前我的电脑上已经安装了python2.7,是采用Anaconda来搭建的。 什么是Anaconda呢? Anaconda是一个开源的Python发行版,其包含了conda、Python等180多个科学包及其依赖项。Anaconda 是跨平台的,支持 Linux, Mac, Windows系统,提供了包管理与环境管理的功能,可以很方便地解决多版本python并存、切换以及各种第三方包安装问题。A

Python3获取excel中任意单元格数据(2)

#运行该程序,首先在桌面新建一个名为"数据.xlsx"的excel文件,并且该excle具有有效数据# 第一步:导入包from openpyxl import load_workbook, Workbookimport os# 第二步:定义函数,返回文件存放的路径def GetDesktopPath():return os.path.join(os.path.expanduser('~'),

python3读取excel内容(1)

通过python读取excel中sheet里边的内容 import xlrdmyFile = xlrd.open_workbook('1.xlsx') #打开一个excle文件table = myFile.sheets()[0] #打开第一个sheetnrows = table.nrows #读取该sheet的行数for i in range(nrows): #遍历每一行if i == 0