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

网站建设介绍怎么写国外优惠卷网站怎么做

网站建设介绍怎么写,国外优惠卷网站怎么做,网站项目需求文档,新沂网站建设公司【力扣题】题目描述: 题解:从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.15wanjia.com/news/176200.html

相关文章:

  • 国家示范校建设网站wordpress最近浏览器
  • 邢台市网站开发公司有哪些开个人网站需要多少钱
  • 放网站的服务器吗外贸网站设计模板
  • 广州免费建站找哪家查询网站是否被收录
  • 重庆网站建设模板制作在360网站做公告怎么弄
  • 网站右边跳出的广告怎么做优惠券网站怎么做的
  • 滨州 网站建设汉阳网站建设哪家便宜
  • 上海网站建设怎么样海南注册公司在哪个网站
  • 海口智能建站模板线上营销方式6种
  • 深圳专业做网站较好的公司网站开发网页制作薪资
  • 美妆网站制作教程电力网站怎么做
  • 聊城集团网站建设流程wordpress替换图片
  • 如何评价一个网站的网站建设弹性盒子做微网站
  • 怎么快速搭建网站网站开发社交网络功能的作用
  • 新网站建设服务公司有了网站怎样做公众号
  • wordpress图片生成插件seo的宗旨是
  • 旅游网站的设计与制作html苏州网站关键字优化
  • 一个域名可以做几个网站吗网站建设以及运营方面
  • 检查网站的跳转路径是否清晰 哪里要优化销售单软件永久免费版
  • 做网站是干什么的网站的公告轮播效果怎么做
  • 二 网站建设的重要性wordpress主题 餐饮
  • 东莞网站建设哪家最好大宗交易平台软件
  • 怎样做免费企业网站推广网络怎么做
  • wordpress工单主题重庆seo博客推广
  • 家具品牌网站怎么建个人网站
  • 网站怎么更换域名网站文章正文可以做内链吗
  • 杭州高端网站建设公司哪家好怎么寻找做有意做网站的客户
  • 做彩票网站需要什么条件如何建网站免费
  • 大庆做网站比较好的公司建站推广什么意思
  • 北京市教学名师奖建设项目网站深圳出台科技支持政策