位运算|比特位计数、汉明距离

位运算|比特位计数、汉明距离

338 比特位计数

在这里插入图片描述

/**

  • 比特位计数
  • 法一:Brian Kernighan 算法的原理是:对于任意整数 x,令 x=x & (x−1),
  • 该运算将 x 的二进制表示的最后一个 1 变成 0。
  • 因此,对 x 重复该操作,直到 x 变成 0,则操作次数即为 x 的「一比特数」。
  • 法二:bits[x]=bits[x-y]+1,y为2的整数次幂,y&(y-1)=0
    */

在这里插入图片描述

/**
 * 比特位计数
 * 法一:Brian Kernighan 算法的原理是:对于任意整数 x,令 x=x & (x−1),
 * 该运算将 x 的二进制表示的最后一个 1 变成 0。
 * 因此,对 x 重复该操作,直到 x 变成 0,则操作次数即为 x 的「一比特数」。
 *
 * 法二:bits[x]=bits[x-y]+1,y为2的整数次幂,y&(y-1)=0
 */
public class $338 {
    //动态规划-最高有效位
    public int[] countBits2(int n) {
        int[] bits = new int[n+1];
        int highBit = 0;

        for (int i = 1; i <= n; i++) {
            if ((i & (i-1)) == 0) {
                highBit = i;
            }

            bits[i] = bits[i-highBit] + 1;
        }
        return bits;
    }
}

/**
 * 比特位计数
 * 法一:Brian Kernighan 算法的原理是:对于任意整数 x,令 x=x & (x−1),
 * 该运算将 x 的二进制表示的最后一个 1 变成 0。
 * 因此,对 x 重复该操作,直到 x 变成 0,则操作次数即为 x 的「一比特数」。
 *
 * 法二:bits[x]=bits[x-y]+1,y为2的整数次幂,y&(y-1)=0
 */
public class $338 {
    //动态规划-最高有效位
    public int[] countBits2(int n) {
        int[] bits = new int[n+1];
        int highBit = 0;

        for (int i = 1; i <= n; i++) {
            if ((i & (i-1)) == 0) {
                highBit = i;
            }

            bits[i] = bits[i-highBit] + 1;
        }
        return bits;
    }
}

461 汉明距离

在这里插入图片描述

/**
 * 汉明距离
 * s=x^y
 * 求s的比特位中1的数量
 * 法一:内置函数
 * 法二:z&=z-1
 * 法三:不断地检查 s 的最低位,如果最低位为 1,那么令计数器加一,
 * 然后我们令 s 整体右移一位,这样 s的最低位将被舍去,原本的次低位就变成了新的最低位。
 * 我们重复这个过程直到 s=0 为止。这样计数器中就累计了 s的二进制表示中 1 的数量。
 */
public class $461 {
    public int hammingDistance(int x, int y) {
        int z = x ^ y;

        return Integer.bitCount(z);

//        int cnt = 0;
//        while (z != 0) {
//            z = z & (z-1);
//            cnt++;
//        }
//        return cnt;

//        int cnt = 0;
//        while (z != 0) {
//            cnt += z & 1;
//            z >>= 1;
//        }
//        return cnt;
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/276127.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

中职网络安全Web2003-2——Web渗透测试

需要环境或换&#xff0c;有问题可以私信我或加Q 1.通过URL访问http://靶机IP/1&#xff0c;对该页面进行渗透测试&#xff0c;将完成后返回的结果内容作为Flag值提交&#xff1b; FLAGflag{htmlcode} 2.通过URL访问http://靶机IP/2&#xff0c;对该页面进行渗透测试&#xff…

数字钥匙进入3.0时代,他们要做智能汽车时代的「微信」

“假设用我们的即时通讯的工具来说&#xff0c;我们想造一个微信&#xff0c;我们希望跟更多的主机厂拥抱融合&#xff0c;而不是造一个飞信。” 11月24日&#xff0c;在银基科技承办的第三届数字钥匙及生态大会期间&#xff0c;银基科技CEO单宏寅尝试向到场的媒体&#xff0c…

Flink Kafka[输入/输出] Connector

本章重点介绍生产环境中最常用到的Flink kafka connector。使用Flink的同学&#xff0c;一定会很熟悉kafka&#xff0c;它是一个分布式的、分区的、多副本的、 支持高吞吐的、发布订阅消息系统。生产环境环境中也经常会跟kafka进行一些数据的交换&#xff0c;比如利用kafka con…

代码随想录刷题题Day24

刷题的第二十四天&#xff0c;希望自己能够不断坚持下去&#xff0c;迎来蜕变。&#x1f600;&#x1f600;&#x1f600; 刷题语言&#xff1a;C Day24 任务 ● 491.递增子序列 ● 46.全排列 ● 47.全排列 II 1 递增子序列 491.递增子序列 思路&#xff1a; 本题求自增子序…

Translation翻译插件

Translation插件是为IntelliJ IDEA开发的&#xff0c;因此只能在IntelliJ IDEA中使用。但是&#xff0c;如果你需要在其他软件中进行翻译&#xff0c;可以考虑使用其他的翻译工具或服务。例如&#xff0c;一些在线翻译网站&#xff08;如Google翻译、百度翻译等&#xff09;提供…

由浅入深走进Python异步编程【协程与yield】(含代码实例讲解 || 迭代器、生成器、协程、yield from)

写在前面 从底层到第三方库&#xff0c;全面讲解python的异步编程。这节讲述的是python异步编程的底层原理第一节&#xff0c;详细了解需要配合下一节观看哦。纯干货&#xff0c;无概念&#xff0c;代码实例讲解。 本系列有6章左右&#xff0c;点击头像或者专栏查看更多内容&…

C++学习实践(一)高频面试问题总结(附详细答案)

文章目录 一、基础常见面试题1、数组和链表区别2、深拷贝和浅拷贝相关问题的区别3、a和a区别4、c内存模型5、四种强制转换和应用场景 二、指针相关1、指针和引用的区别2、函数指针和指针函数3、传指针、引用和值4、常量指针和指针常量5、野指针6、智能指针的用法 三、关键字作用…

YOLOv8可视化:引入多种可视化CAM方法,为科研保驾护航

💡💡💡本文内容:调用pytorch下的CAM可视化库,支持十多种可视化方法,打开“黑盒”,让YOLOv8变得相对可解释性 收录 YOLOv8原创自研 https://blog.csdn.net/m0_63774211/category_12511737.html?spm=1001.2014.3001.5482 💡💡💡全网独家首发创新(原创),适…

桥接模式-举例

概叙&#xff1a;桥接模式用一种巧妙的方式处理多层继承存在的问题&#xff0c; 用抽象关联取代了传统的多层继承&#xff0c; 将类之间的静态继承关系转换为动态的对象组合关系&#xff0c; 使得系统更加灵活&#xff0c;并易于扩展&#xff0c; 同时有效控制了系统中类的个数…

企业如何购买腾讯云服务器?(详细指南)

腾讯云服务器购买流程直接在官方秒杀活动上购买比较划算&#xff0c;在云服务器CVM或轻量应用服务器页面自定义购买价格比较贵&#xff0c;但是自定义购买云服务器CPU内存带宽配置选择范围广&#xff0c;活动上购买只能选择固定的活动机&#xff0c;选择范围窄&#xff0c;但是…

专题四:前缀和

前缀和 一.一维前缀和(模板)&#xff1a;1.思路一&#xff1a;暴力解法2.思路二&#xff1a;前缀和思路 二. 二维前缀和(模板)&#xff1a;1.思路一&#xff1a;构造前缀和数组 三.寻找数组的中心下标&#xff1a;1.思路一&#xff1a;前缀和 四.除自身以外数组的乘积&#xff…

php最常出现的错误

目录 1. E_WARNING&#xff1a;为 foreach &#xff08;&#xff09;提供的参数无效 2. PDOException&#xff1a;拒绝SQLSTATEHY000连接 3.错误使用empty函数 1. E_WARNING&#xff1a;为 foreach &#xff08;&#xff09;提供的参数无效 PHP foreach构造在PHP 4中引入&am…

web3方向产品调研

每次互联网形态的改变&#xff0c;都会对世界产生很大的影响&#xff0c;上一次对社会产生重大影响的互联网形态&#xff08;Web2.0&#xff09;催生了一批改变人类生活和信息交互方式的企业。 目录 概述DAO是什么&#xff1f;为什么我们需要DAO? 金融服务金融桥接及周边服务D…

Unity中Shader 齐次坐标

文章目录 前言一、什么是齐次坐标二、齐次坐标增加分量 w 的意义1、当 w ≠ \neq  0时&#xff1a;2、当 w 0时&#xff1a;3、用方程组&#xff0c;直观的看一下w的意义 前言 在之前的文章中&#xff0c;我们进行了正交相机视图空间转化到裁剪空间的推导。 Unity中Shade…

3DMAX 中的 VR 渲染器如何设置局部区域渲染?

3DMAX 中的 VR 渲染器如何设置局部渲染&#xff1f; 首先我们要得打开渲染设置&#xff0c;在3damx里按F10&#xff0c;调出渲染设置。选定渲染器为Vary渲染器&#xff1a; 设置VR的局部渲染&#xff0c;需要打开帧缓冲&#xff0c;我们在V-ary项下&#xff0c;打开帧缓冲(点击…

腾讯云服务器怎么买划算?最新优惠价格表

2023腾讯云轻量应用服务器优惠价格表&#xff0c;12月最新报价&#xff0c;腾讯云轻量2核2G3M带宽62元一年、2核2G4M轻量服务器118元一年&#xff0c;540元三年、2核4G5M带宽218元一年&#xff0c;756元三年、4核8G12M轻量服务器646元15个月&#xff0c;CVM云服务器S5实例2核2G…

六、Redis 分布式系统

六、Redis 分布式系统 六、Redis 分布式系统6.1 数据分区算法6.1.1 顺序分区6.1.2 哈希分区 6.2 系统搭建与运行6.2.1 系统搭建6.2.2 系统启动与关闭 6.3 集群操作6.3.1 连接集群6.3.2 写入数据6.3.3 集群查询6.3.4 故障转移6.3.5 集群扩容6.3.6 集群收缩 6.4 分布式系统的限制…

vue整理面试题

1. v-if/v-show的区别? v-if"表达式" 当表达式值true&#xff0c;v-if所作用的元素显示 否则隐藏 v-show"表达式" 当表达式值true&#xff0c;v-if所作用的元素显示 否则隐藏 理解&#xff1a; v-if控制元素显示与隐藏&#xff0c;通过js创建dom元素或删除…

统信UOS linux下opencv应用编译时的头文件和库文件路径查找设置方法

☞ ░ 前往老猿Python博客 ░ https://blog.csdn.net/LaoYuanPython 一、引言 老猿原来进行的C和C开发主要是基于windows环境的&#xff0c;目前要在统信UOS操作系统环境下编译opencv应用程序&#xff0c;其环境设置与windows环境下变化很多&#xff0c;今天就来介绍一下在统…

AtCoder Beginner Contest 333

B - Pentagon 没什么好讲的&#xff0c;pass int a[N]; int len[6] { 0,1,2,2,1 }; void solve() {char s1, s2, t1, t2; cin >> s1 >> s2 >> t1 >> t2;if (s2 < s1) swap(s1, s2);if (t2 < t1) swap(t1, t2);int d1 s2 - s1, d2 t2 - t1;if…