当前位置: 首页 > news >正文

做网站制作赚钱吗金点子招聘信息莱芜信息港

做网站制作赚钱吗,金点子招聘信息莱芜信息港,2017网站建设报价单,广州网站优化哪里有【力扣题】题目描述: 题解:从0到n的整数,逐一统计二进制中1的个数,记录在一个新列表中。 【Python3】代码: 1、解题思路:Python函数。 知识点:bin(...):转为二进制字符串&#xff…

【力扣题】题目描述:

题解:从0到n的整数,逐一统计二进制中1的个数,记录在一个新列表中。

【Python3】代码:

1、解题思路:Python函数。

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

              字符串.count(...):统计字符串中某字符出现的次数。

              列表.append(...):往列表尾部添加元素。

              列表推导式:用简洁的方式创建列表。即 [ 对元素的简单操作 for 变量 in 可迭代对象 ]

class Solution:def countBits(self, n: int) -> List[int]:res = [bin(i)[2:].count("1") for i in range(n+1)]return res#相当于res = []for i in range(n+1):res.append(bin(i)[2:].count("1"))return res

2、解题思路:Brian Kernighan算法。

每次将整数的二进制最低位的1消除为0,直到整数变为0。消除多少次则二进制中有多少个1。

num &= (num-1) 即 num = num & (num-1) 。

相当于将二进制最低位的1消除为0。若num为2的整数幂,则num&(num-1)=0。

例如:num=5(二进制101),num-1=4(二进制100),num&(num-1)=101&100=100(即将101的最低位的1消除为0)。

class Solution:def countBits(self, n: int) -> List[int]:res = []for i in range(n+1):cou = 0while i > 0:i &= (i-1)cou += 1res.append(cou)return res# 或者def count_one(num):cou = 0while num > 0:num &= (num-1)cou += 1return cou  res = [count_one(i) for i in range(n+1)]return res

3、解题思路:动态规划。

将一个问题拆分成多个子问题,解决子问题并记录子问题的结果减少重复计算,最终整个问题解决。

(3-1)若num是2的整数幂,num中只有最高位有1,则记录num。

若num不是2的整数幂,则num的二进制 比 去除最高位之后的二进制 多一个1。

例如:5(二进制101),去除最高位之后的二进制01(其个数已统计过为1),则5的二进制中1的个数为1+1=2个。

class Solution:def countBits(self, n: int) -> List[int]:# 动态规划--最高有效位res = [0]high = 0                    # 记录最高有效位即二进制中只有最高位有一个1for i in range(1,n+1):if i & (i-1) == 0:high = ires.append(res[i-high] + 1)return res

(3-2)将二进制右移一位,去除最低位之后的二进制中1的个数已统计过;被去除的最低位若为1则结果中再加1。

例如:5(二进制101),右移一位之后的二进制10(其个数已统计过为1),被去除的最低位为1则5的二进制中1的个数为1+1=2个。

知识点:num >> 1:将num二进制右移一位。

              i & 1:将num与1进行二进制与运算。

class Solution:def countBits(self, n: int) -> List[int]:# 动态规划-最低有效位res = [0]for i in range(1,n+1):res.append(res[i >> 1] + (i & 1))return res

(3-3)num&(num-1)消除num最低位的1,则num 比 消除最低位1之后 多一个1。

例如:num=5(二进制101),num-1=4(二进制100),num&(num-1)=101&100=100,二进制100其个数已统计过为1,则5的二进制中1的个数为1+1=2个。

class Solution:def countBits(self, n: int) -> List[int]:# 动态规划--最低设置位res = [0]for i in range(1,n+1):res.append(res[i & (i-1)] + 1)return res

http://www.yayakq.cn/news/46523/

相关文章:

  • 网站开通微信支付收费wordpress json 插件
  • 个人业余做网站怎么弄外贸网站推广平台排名前十名
  • 哪个网站可以做网页网站建设内容方法
  • seo站长平台wordpress微信支付开发
  • 包头做网站企业建设租房子的网站
  • 长沙制作网站软件网站设计开发
  • 个人合法网站怎么做在线制作书封网站
  • 网站开发实施经费预算古典网站织梦模板
  • 海外购物网站大全手机微网站建设
  • wordpress技术教程 pdf网站的后续优化方案
  • 公司要我做网站_没有公司的材料是不是不可以做网站建设考试多选题
  • 线上投票怎么做网站栏目设计优化方案
  • 肇庆网站制作策划08影院WordPress源码
  • 单位网站建设建议对策宁波网站建设优化服务公司
  • 什么行业最需要网站建设网站首页html代码在哪
  • 美橙互联网站建设案例网站编程零基础入门
  • 连云制作企业网站做淘宝的导购网站
  • 钓鱼网站制作方法ps如何做网站横幅
  • 云主机安装网站一个网站如何进行推广宣传
  • 保健品网站建设背景做外贸的女生干净吗
  • 做调像什么网站找活青岛建设银行网站
  • 济南网站建设q479185700惠wordpress iis 伪静态
  • 在线做qq空间的网站吗下载手机app安装
  • 怎么做审核网站宁波网站建设制作电话号码
  • 注册公司网站模板下载海口网站建设做网站
  • 外贸推广用中文网站山东省住房和城乡建设厅证件查询
  • 网站ip被屏蔽怎么办广园路建设公司网站
  • 网站开发工具安卓版理财平台网站建设
  • 汨罗做网站价格wordpress怎么放广告
  • 网站推广服务包括哪些全球速卖通是什么平台