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

邢台seo招聘张家港优化网站seo

邢台seo招聘,张家港优化网站seo,常州市城市建设集团有限公司网站,静态网页代码大全题目: 给定一个非负整数 n,请计算 0 到 n 之间的每个数字的二进制表示中 1 的个数,并输出一个数组 示例: 1、 输入: n 2 输出: [0,1,1] 解释: 0 --> 0 1 --> 1 2 --> 10 2、 输入: n 5 输出: [0,1,1,2,1,2] 解释: 0 …

题目:

给定一个非负整数 n,请计算 0 到 n 之间的每个数字的二进制表示中 1 的个数,并输出一个数组

示例:

1、

输入: n = 2
输出: [0,1,1]
解释: 
0 --> 0
1 --> 1
2 --> 10

2、

输入: n = 5
输出: [0,1,1,2,1,2]
解释:
0 --> 0
1 --> 1
2 --> 10
3 --> 11
4 --> 100
5 --> 101

解题思路:

  1. 先把从 0 到 n 的非负整数,放到数组里
  2. 把这些非负整数都转换为二进制
  3. 判断他们当中 1 的个数
  4. 把二进制中的 0 和 1 相加,然后输出成数组
  5. 数组中数的和就是这些数当中 1 的个数

 

 

 

 

部分编程语言有相应的内置函数用于计算给定的整数的二进制表示中的 111 的数目,例如 Java\texttt{Java}Java 的 Integer.bitCount\texttt{Integer.bitCount}Integer.bitCount,C++\texttt{C++}C++ 的 __builtin_popcount\texttt{\_\_builtin\_popcount}__builtin_popcount,Go\texttt{Go}Go 的 bits.OnesCount\texttt{bits.OnesCount}bits.OnesCount 等,

方法一:Brian Kcrnighan 算法

最直观的做法是对从 0 到 n 的每个整数直接计算【一比特数】。每个 int 型的数都可以用 32 位二进制数表示,只有遍历其二进制表示的每一位即可得到 1 的数目。

利用 Brian Kcrnighan 算法,可以在一定程度上进一步提升计算速度。

Brian Kcrnighan算法的原理:

对于任意整数 x,令 x = x&(x - 1),该运算将 x 的二进制表示的最后一个 1 变成 0。因此,对 x 重复该操作,直到 x 变成 0,则操作次数即为 x 的【一比特数】

 

func onesCount(x int) (ones int) {for ; x > 0; x &= x - 1 {ones++}return
}func countBits(n int) []int {bits := make([]int, n+1)for i := range bits {bits[i] = onesCount(i)}return bits
}

 

方法二:动态规划 —— 最高有效位

func countBits(n int) []int {bits := make([]int, n+1)highBit := 0for i := 1, i <= n; i++ {if i&(i-1) == 0 {highBit = i}bits[i] = bits[i-highBit] + 1}return bits
}

 

 

 

方法三:动态规划 —— 最低有效位

 

 

func countBits(n int) []int {bits := make([]int, n+1)for i := 1; i <= n; i++ {bit[i] = bits[i>>1] + i&1}return bits
}

 

方法四:动态规划 —— 最低设置位

func countBits(n int) []int {bits := make([]int, n+1)for i := 1; i <= n; i++ {bits[i] = bits[i&(i-1)] + 1}return bits
}

 

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

相关文章:

  • 学会网站建设项目产品毕业设计网站建设
  • 网站 如何做用户统计郑州平面设计公司排行榜
  • 专业企业展馆展厅设计公司抖音seo关键词优化
  • 有做自由行包车的网站网页qq空间登录界面
  • 网站设计需要多久天津大型网站建设报价公司
  • 百度自然排名网站的logo怎么做网站开发免责声明
  • 韶关住房和城乡建设网站手表网站排名186信息网
  • 天津建设工程竣工备案公示网站建设中英文网站
  • 一站式服务是什么意思网站怎么增加关键词库
  • 电脑技术学习网站贵阳h5网站建设
  • 平板电脑 做网站开发镇江网站优化
  • 龙陵县住房和城乡建设局网站网站建设是如何称呼的
  • 自己做的网站怎么才能在百度上查找网页设计技术学什么
  • 泊头做网站电话重庆建站管理系统信息
  • 做网站费用可以看为广告费用吗wordpress注册字段
  • 昆明公司网站开发渭南商铺网站建设
  • 电影网站的代理怎么做沈阳钢结构网架公司
  • 房产网站制作网站建设方案服务器
  • 开发公司年终工作总结张家界seo网站优化
  • json做网站的数据库自助建站免费自助建站网站
  • 影视网站策划书彩票网站建设平台
  • 保定网站建设求职简历小程序是什么东西
  • o2o典型代表网站简洁的网站
  • 建网站一般多少钱幸福里wordpress ico文件
  • 公司网站建设申请单做玩网站怎么上传图片
  • 手机网站建设需求文档外贸网站屏蔽国内ip
  • 西安网站建设 玖佰网络自己弄个网站要多少钱
  • 档案馆建设网站网站建设原理
  • 互联网站备案信息上海公司注册一网通办官网
  • 站长网站被跳转怎么办网页设计与制作思考建议