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

平顶山做网站推广有没有接单做加工的网站

平顶山做网站推广,有没有接单做加工的网站,安丘做网站的,wordpress 静态文件大编写一个函数#xff0c;输入是一个无符号整数#xff08;以二进制串的形式#xff09;#xff0c;返回其二进制表达式中数字位数为 1 的个数#xff08;也被称为汉明重量#xff09;。 提示#xff1a; 请注意#xff0c;在某些语言#xff08;如 Java#xff09;中…编写一个函数输入是一个无符号整数以二进制串的形式返回其二进制表达式中数字位数为 1 的个数也被称为汉明重量。 提示 请注意在某些语言如 Java中没有无符号整数类型。在这种情况下输入和输出都将被指定为有符号整数类型并且不应影响您的实现因为无论整数是有符号的还是无符号的其内部的二进制表示形式都是相同的。在 Java 中编译器使用二进制补码记法来表示有符号整数。因此在 示例 3 中输入表示有符号整数 -3。 示例 1 输入n 00000000000000000000000000001011 输出3 解释输入的二进制串 00000000000000000000000000001011 中共有三位为 1。示例 2 输入n 00000000000000000000000010000000 输出1 解释输入的二进制串 00000000000000000000000010000000 中共有一位为 1。示例 3 输入n 11111111111111111111111111111101 输出31 解释输入的二进制串 11111111111111111111111111111101 中共有 31 位为 1。 解法一 简单粗暴些依次判断最低位是否是 1然后把它加入到结果中。判断最低位是否是 1我们只需要把原数字和 000000..001 相与也就是和 1 相与即可。 public int hammingWeight(int n) {int count 0;while (n ! 0) {count n 1;n 1;}return count; }解法二 比较 trick 的方法官方 题解提供的分享一下。 有一个方法可以把最右边的 1 置为 0举个具体的例子。 比如十进制的 10二进制形式是 1010然后我们只需要把它和 9 进行按位与操作也就是 10 9 (1010) (1001) 1000也就是把 1010 最右边的 1 置为 0。 规律就是对于任意一个数 n然后 n (n-1) 的结果就是把 n 的最右边的 1 置为 0 。 也比较好理解当我们对一个数减 1 的话比如原来的数是 ...1010000然后减一就会向前借位直到遇到最右边的第一个 1变成 ...1001111然后我们把它和原数按位与就会把从原数最右边 1 开始的位置全部置零了 ...10000000。 有了这个技巧我们只需要把原数依次将最右边的 1 置为 0直到原数变成 0记录总共操作了几次即可。 public int hammingWeight(int n) {int count 0;while (n ! 0) {n (n - 1);count 1;}return count; }解法三 有点类似于 190 题 的解法二通过整体的位操作解决问题参考 这里-by-time-m-is-the-count-of-1s-and-another-several-method-of-O(1)-time) 也是比较 trick 的不容易想到但还是很有意思的。 本质思想就是用本身的比特位去记录对应位数的比特位 1 的个数举个具体的例子吧。为了简洁求一下 8 比特的数字中 1 的个数。 统计数代表对应括号内 1 的个数 1 1 0 1 0 0 1 1 首先把它看做 8 组统计每组 1 的个数 原数字(1) (1) (0) (1) (0) (0) (1) (1) 统计数(1) (1) (0) (1) (0) (0) (1) (1) 每个数字本身就天然的代表了当前组 1 的个数。接下来看做 4 组相邻两组进行合并统计数其实就是上边相邻组统计数相加即可。 原数字(1 1) (0 1) (0 0) (1 1) 统计数(1 0) (0 1) (0 0) (1 0) 十进制 2 1 0 2 接下来看做 2 组相邻两组进行合并统计数变成上边相邻组统计数的和。 原数字(1 1 0 1) (0 0 1 1) 统计数(0 0 1 1) (0 0 1 0) 十进制 3 2 接下来看做 1 组相邻两组进行合并统计数变成上边相邻组统计数的和。 原数字(1 1 0 1 0 0 1 1) 统计数(0 0 0 0 0 1 0 1) 十进制 5看一下 「统计数」的变化也就是统计的 1 的个数。 看下二进制形式的变化两两相加。 看下十进制形式的变化两两相加。 最后我们就的得到了 1 的个数是 5。 所以问题的关键就是怎么实现每次合并相邻统计数我们可以通过位操作实现举个例子。 比如上边 4 组到 2 组中的前两组合成一组的变化。要把 (1 0) (0 1) 两组相加变成 (0 0 1 1) 。其实我们只需要把 1001 和 0011 相与得到低两位然后把 1001 右移两位再和 0011 相与得到高两位最后将两数相加即可。也就是(1001) (0011) (1001) 2 (0011) 0011。 扩展到任意情况两组合并成一组如果合并前每组的个数是 n合并前的数字是 x那么合并后的数字就是 x (000...111...) x n (000...111...)其中 0 和 1 的个数是 n。 public int hammingWeight(int n) {n (n 0x55555555) ((n 1) 0x55555555); // 32 组向 16 组合并合并前每组 1 个数n (n 0x33333333) ((n 2) 0x33333333); // 16 组向 8 组合并合并前每组 2 个数n (n 0x0f0f0f0f) ((n 4) 0x0f0f0f0f); // 8 组向 4 组合并合并前每组 4 个数n (n 0x00ff00ff) ((n 8) 0x00ff00ff); // 4 组向 2 组合并合并前每组 8 个数n (n 0x0000ffff) ((n 16) 0x0000ffff); // 2 组向 1 组合并合并前每组 16 个数return n; }写成 16 进制可能不好理解我们拿16 组向 8 组合并举例合并前每组 2 个数。也就是上边我们推导的我们要把 (1 0) (0 1) 两组合并需要和 0011 按位与写成 16 进制就是 3因为合并完是 8 组所以就是 8 个 3即 0x33333333。
http://www.pierceye.com/news/588980/

相关文章:

  • 长沙做网站的公司哪家最好服务公司取名
  • 网站缩略图制作宁波商城网站建设
  • 公司网站公众号维护怎么做湖南网站建设
  • 商务网站建设实训结论装饰装修工程
  • dw做网站简单吗网络科技建设网站
  • 天台建设局网站wordpress编辑器没有16px
  • 携程网站建设计划管理与进度控制志鸿优化设计电子版
  • 网站一级域名和二级域名wordpress 插件 页面
  • 怎么做免费网站如何让百度收录网网站建设设计
  • 河北建设工程信息网官方网站证件在线制作免费
  • 推广网官方推广网站wordpress用户角色权限
  • 电子商务网站模板html淘宝网页版登录
  • 忆达城市建设游戏网站佛山市和城乡建设局网站
  • 备案后的域名改网站名青浦建设机械网站
  • 网站地图怎么做html网络营销论文2000字
  • 武进区城乡建设局网站组建网站建设团队
  • 做淘宝链接模板网站广安网站建设兼职
  • 受欢迎的网站建设平台有用的网站地址
  • 网站建设推广岗位网站建设法规
  • ftp两个网站子域名的绑定郑州网站推广公司
  • 安庆网站设计哈尔滨工程招标信息网
  • 精湛的佛山网站设计太原网站建设培训
  • 邹城市住房和建设局网站深圳比较好的vi设计公司
  • 企业网站建设维护方案一元购物网站怎么做
  • 网站建设优化公司哪家好兰州做网站公司es5188
  • jsp网站开发工资住建网查询
  • 长沙建网站需要多少钱夹江移动网站建设
  • 淄博网站制作高端网站后台任务
  • 营销型网站源码成都网站建设seo
  • 天津网上商城网站建设专业的猎头公司