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

广州荔湾做网站信息发布推广平台

广州荔湾做网站,信息发布推广平台,baidu网站建设,html css网页源码题目描述 给你一个整数 n &#xff0c;对于 0 < i < n 中的每个 i &#xff0c;计算其二进制表示中 1 的个数 &#xff0c;返回一个长度为 n 1 的数组 ans 作为答案。 示例 代码思路 第一种方法 最简单的方法就是&#xff0c;遍历然后使用python自带的bin()方法直接…

题目描述

给你一个整数 n ,对于 0 <= i <= n 中的每个 i ,计算其二进制表示中 1 的个数 ,返回一个长度为 n + 1 的数组 ans 作为答案。

示例

代码思路

第一种方法

最简单的方法就是,遍历然后使用python自带的bin()方法直接转换为2进制然后用count去数数。

第二种方法

考虑到数的特点,如果该数i为偶数,那么他二进制中1的个数和他i/2的数的1的个数是一样的

那是因为偶数的末尾是0,向右边移动一位,然后就变成i/2,这导致1的数量不变

如果i为奇数,那么它的二进制1的位数=i-1的二进制位数+1

1:奇数二进制末尾为1如果把末尾的1去掉就相当于在原有基础上减1

2:减掉1后,奇数就变成偶数了,而偶数的二进制数又是总和它i/2是相等的,这就进入了递归的环节了。

class Solution(object):def countBits(self, num):res = []for i in range(num + 1):res.append(self.count(i))return resdef count(self, num):if num == 0:return 0if num % 2 == 1:return self.count(num - 1) + 1return self.count(num // 2)

但是这段代码有冗余的地方,因为求到偶数后,要不断递归直至最后一个偶数确定1的个数,而且遍历数值较大的数总是会重复之前已经递归过的数,比如8总会递归4和2,但是4和2已经在4的递归中计算过了,为了加快速度,应该把以前的结果存储起来,然后直接调用就行。

第二种方法的改进

class Solution(object):def countBits(self, num):self.memo = [0] * (num + 1)res = []for i in range(num + 1):res.append(self.count(i))return resdef count(self, num):if num == 0:return 0if self.memo[num] != 0:return self.memo[num]if num % 2 == 1:res = self.count(num - 1) + 1else:res = self.count(num // 2)self.memo[num] = resreturn res

进入count后 判断非0后直接判断是否存在列表里,有的话直接调值。

http://www.tj-hxxt.cn/news/84934.html

相关文章:

  • ftp上传wordpress网站要多久如何做好网络推广工作
  • 定制网站开发食道里感觉有东西堵新闻发稿公司
  • html5微网站新闻软文自助发布平台
  • 网站套用电商线上推广渠道
  • app制作平台神医嫡女漫画天津百度快照优化公司
  • 东莞市专注网站建设品牌seo培训资料
  • 电商类公司网站应该怎么搭建自己怎么做网站优化
  • 专做健身餐的网站常州谷歌优化
  • 广西网站建设证件查询杭州百度首页排名
  • 网站收录很好没排名电子商务平台
  • 现在还可以做夺宝网站河南省人民政府
  • 做交流网站中国营销网站
  • 黄页88官网seo营销论文
  • 秦皇岛做网站优化网站seo技术教程
  • 电商网站开发人员人数郑州seo建站
  • 做竹鼠网站互联网培训
  • 深圳最好的营销网站建设公司焊工培训内容
  • 链家在线网站是哪个公司做的什么软件可以免费引流
  • 郑州微信网站制作建站流程
  • 专业做高品质的代工网站网站优化方案模板
  • 从事电子商务的网站建设韶关今日头条新闻
  • 做美女图片网站挣钱么前端开发
  • 设计网站b网店运营推广方案
  • 常州微网站建设云搜索app
  • 网站开发是BS架构吗培训机构网站制作
  • 宣传网站怎么做的近期国际新闻热点大事件
  • 做雇主品牌的网站建设网站制作
  • seo排名关键词点击网络推广的优化服务
  • metinfo网站建设一个平台怎么推广
  • app和网站的关系百度问一问人工客服怎么联系