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

[Go版]算法通关村第十一关白银——位运算的高频算法题

目录

  • 专题1:位移的妙用
    • 题目:位1的个数(也被称为汉明重量)
      • 解法1:遍历所有位,判断每个位的数字是否是1
        • Go代码
      • 解法2:依次消除每个1的位 num=num&(num-1)
        • Go代码
    • 题目:比特位计数
      • 思路分析:遍历每个数,使用上面的位1的个数计算即可
      • Go代码
    • 题目:颠倒二进制位
      • 思路分析:获得低位的数值,左移到高位去
      • Go代码
  • 专题2:位实现加减乘除
    • 题目:两整数之和
      • 思路分析:a&b<<1得进位,a^b得非进位
      • Go代码
    • 题目:递归乘法
      • 思路分析:循环 + 位移
      • Go代码

专题1:位移的妙用

题目:位1的个数(也被称为汉明重量)

题目链接:LeetCode-191. 位1的个数
在这里插入图片描述

解法1:遍历所有位,判断每个位的数字是否是1

Go代码

func hammingWeight(num uint32) int {count := 0for i:=0; i<32; i++ {count += int((num >> i) & 1)}return count   
}

或者

func hammingWeight(num uint32) int {count := 0for i:=0; i<32; i++ {if num & (1 << i) != 0 {count++}}return count   
}

解法2:依次消除每个1的位 num=num&(num-1)

Go代码

func hammingWeight(num uint32) int {count := 0for num != 0 {// 除了最后1个1在&之后被去掉了,前面的&之后 1还是1 0还是0num = num & (num-1)count++}return count
}

题目:比特位计数

题目链接:LeetCode-338. 比特位计数
在这里插入图片描述

思路分析:遍历每个数,使用上面的位1的个数计算即可

Go代码

func countBits(n int) []int {ret := make([]int, 0)for i:=0;i<=n;i++ {ret = append(ret, hammingWeight(i))}return ret
}func hammingWeight(n int) int {count := 0for n != 0 {n = n & (n-1)count++}return count
}

题目:颠倒二进制位

题目链接:LeetCode-190. 颠倒二进制位
在这里插入图片描述

思路分析:获得低位的数值,左移到高位去

Go代码

func reverseBits(num uint32) uint32 {var ret uint32for i,j:=0,31; i<32 && j>=0; i,j=i+1,j-1 {v := num >> i & 1ret = ret | (v<<j)}return ret
}

专题2:位实现加减乘除

题目:两整数之和

题目链接:LeetCode-371. 两整数之和
在这里插入图片描述

思路分析:a&b<<1得进位,a^b得非进位

Go代码

func getSum(a int, b int) int {for b!= 0 {carry := (a & b)<<1 //计算进位a = a ^ b  //计算非进位部分的和b = carry   //更新 b 为进位}return a
}

题目:递归乘法

题目链接:LeetCode-面试题 08.05. 递归乘法
在这里插入图片描述

思路分析:循环 + 位移

在循环中不断将其中一个数加倍(左移),然后根据另一个数的每一位是否为1,来决定是否将加倍后的数累加到最终的结果中。

Go代码

func multiply(A int, B int) int {min := getMin(A, B)max := getMax(A, B)ret := 0for min != 0{//位为1时才更新到ret,否则max一直更新if min & 1 == 1 {ret += max}min = min >> 1  //min除以2max = max << 1  //max乘以2}return ret
}
func getMin(a int, b int) int {if a >= b {return b}return a
}
func getMax(a int, b int) int {if a >= b {return a}return b
}

相关文章:

[Go版]算法通关村第十一关白银——位运算的高频算法题

目录 专题1&#xff1a;位移的妙用题目&#xff1a;位1的个数&#xff08;也被称为汉明重量&#xff09;解法1&#xff1a;遍历所有位&#xff0c;判断每个位的数字是否是1Go代码 解法2&#xff1a;依次消除每个1的位 numnum&(num-1)Go代码 题目&#xff1a;比特位计数思路…...

Swift 基础

工程目录 请点击下面工程名称&#xff0c;跳转到代码的仓库页面&#xff0c;将工程 下载下来 Demo Code 里有详细的注释 点击下载代码&#xff1a;swift-01...

IDEA的常用设置,让你更快速的编程

一、前言 在使用JetBrains的IntelliJ IDEA进行软件开发时&#xff0c;了解和正确配置一些常用设置是非常重要的。IDEA的强大功能和定制性使得开发过程更加高效和舒适。 在本文中&#xff0c;我们将介绍一些常用的IDEA设置&#xff0c;帮助您更好地利用IDEA进行开发。这些设置包…...

docker 镜像的导出与导入 save 与 load

一、镜像导出 docker save 导出 将系统中的镜像保存为压缩包&#xff0c;进行文件传输。使用 docker save --help 查看命令各参数&#xff0c;或者去docker官网查看.以 hello-world镜像为例。 A&#xff1a;将镜像保存为tar包 docker save image > package.tar docker sa…...

WPF显示初始界面--SplashScreen

WPF显示初始界面–SplashScreen 前言 WPF应用程序的运行速度快&#xff0c;但并不能在瞬间启动。当第一次启动应用程序时&#xff0c;会有一些延迟&#xff0c;因为公共语言运行时&#xff08;CLR&#xff09;首先需要初始化.NET环境&#xff0c;然后启动应用程序。 对于WPF中…...

08- AD/DA模/数转换

AD/DA模/数转换 8、AD/DA模/数转换8.1 AD转换注意 示例8.2 DA转换DAC转换原理&#xff1a; 8.3 PWM的DAC 8、AD/DA模/数转换 8.1 AD转换 通道引脚对照表&#xff1a; ADC的引脚&#xff1a; 规则通道和注入通道&#xff1a; 各个通道可以在单次、连续、扫描或者间断模式里…...

DTC服务(0x14 0x19 0x85)

DTC相关的服务有ReadDTCInformation (19) service&#xff0c;ControlDTCSetting (85) service和ReadDTCInformation (19) service ReadDTCInformation (19) service 该服务允许客户端从车辆内任意一台服务器或一组服务器中读取驻留在服务器中的诊断故障代码( DTC )信息的状态…...

【国护攻防场景下的沙箱技术对比】

目录 前言 沙箱技术分析 总结 前言 真高兴呀&#xff0c;又是受到红队大佬青睐的一天&#xff0c;今天下午很荣幸的收到了来自红队大佬的恶意投喂&#xff0c;把我们各位在座100年工作经验的蓝队师傅们吓得赶忙拔掉自己的电脑电源&#xff0c;断掉自己的网线&#xff0c;…...

springboot综合案例第三课

SpringSecurity入门 什么是SpringSecurity Spring Security 的前身是 Acegi Security &#xff0c;是 Spring 项目组中用来提供安全认证服务的框架。 (https://projects.spring.io/spring-security/) Spring Security 为基于J2EE企业应用软件提供了全面安全服务。特别 是使…...

面试经典150题——罗马数字转整数

罗马数字包含以下七种字符: I&#xff0c; V&#xff0c; X&#xff0c; L&#xff0c;C&#xff0c;D 和 M。 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如&#x…...

第三篇|金融人数据来源有哪些

数据对于金融行业真的很重要&#xff0c;那么金融人有哪些途径查数据呢&#xff1f; 国内&#xff1a; 1. 国家统计局 这个应该是无论什么行业都使用最频繁的网站&#xff0c;每个月都会固定发上个月资产投资数据 、工业增加值和利润数据等常规数据&#xff0c;其他数据也会…...

爬虫逆向实战(二)--某某观察城市排行榜

一、数据接口分析 主页地址&#xff1a;某某观察 1、抓包 通过抓包可以发现数据接口是multi 2、判断是否有加密参数 请求参数是否加密&#xff1f; 无请求头是否加密&#xff1f; 无cookie是否加密&#xff1f; 无响应数据是否加密&#xff1f; 通过查看“响应”板块可以…...

Grafana Prometheus 通过JMX监控kafka 【2023最新方式】

第三方kafka exporter方案 目前网上关于使用Prometheus 监控kafka的大部分资料都是使用一个第三方的 kafka exporter&#xff0c;他的原理大概就是启动一个kafka客户端&#xff0c;获取kafka服务器的信息&#xff0c;然后提供一些metric接口供Prometheus使用&#xff0c;随意它…...

发布游戏,进行打包。(Unity)

做到这里&#xff0c;我们的项目基本功能已经完成了&#xff0c;如果你还想使项目功能更加完善&#xff0c;可以自己思考如何补充&#xff0c;充分发挥并进行优化使效果达到更加美好。 首先呢&#xff0c;我们这里是说打包Window电脑游戏&#xff0c;我们直接点击菜单栏文件-&…...

我的C++待办事项

2023年8月17日 内存管理部分 学习智能指针 写一篇关于怎么在Linux中安装和使用vclgrind的博客&#xff08;2023年8月17日下午完成&#xff09; 拍一个关于在Linux中安装和使用vclgrind的视频 在Windows上怎么检测内存泄漏 怎么使用Address Sanitizer 在Linux上如何使用gc…...

浙大数据结构第七周之Saving James Bond - Hard Version

题目详情&#xff1a; This time let us consider the situation in the movie "Live and Let Die" in which James Bond, the worlds most famous spy, was captured by a group of drug dealers. He was sent to a small piece of land at the center of a lake f…...

线程同步条件变量

为何要线程同步 在线程互斥中外面解决了多线程访问共享资源所会造成的问题。 这篇文章主要是解决当多线程互斥后引发的新的问题&#xff1a;线程饥饿的问题。 什么是线程饥饿&#xff1f;互斥导致了多线程对临界区访问只能改变为串行&#xff0c;这样访问临界资源的代码只能…...

jeecgboot-vue3 查询区 label 文字居左实现

以系统管理中的系统角色界面为例 操作步骤 1. 通过路由或者工具找到当前代码所在的文件 src/views/system/role/index.vue 2. 找到 useListPage 调用&#xff0c;fromConfig 对象加入 labelWidth 和 rowProps 属性 formConfig: {labelWidth: 65, // 设置所有的label宽rowPr…...

CentOS系统环境搭建(五)——Centos7安装maven

centos系统环境搭建专栏&#x1f517;点击跳转 Centos7安装maven 下载压缩包 maven下载官网 解压 压缩包放置到/usr/local tar -xvf apache-maven-3.9.2-bin.tar.gz配置环境变量 vim /etc/profile在最下面追加 MAVEN_HOME/usr/local/apache-maven-3.9.2 export PATH${MAV…...

.eslintrc配置

ESLint 标准规则 /*** AlloyTeam ESLint 规则** 包含所有 ESLint 规则* 使用 babel-eslint 作为解析器** fixable 表示此配置支持 --fix* off 表示此配置被关闭了&#xff0c;并且后面说明了关闭的原因*/module.exports {parser: babel-eslint,parserOptions: {ecmaVersion: 2…...

Docker 运行 Kafka 带 SASL 认证教程

Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明&#xff1a;server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...

基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容

基于 ​UniApp + WebSocket​实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配​微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...

CentOS下的分布式内存计算Spark环境部署

一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架&#xff0c;相比 MapReduce 具有以下核心优势&#xff1a; 内存计算&#xff1a;数据可常驻内存&#xff0c;迭代计算性能提升 10-100 倍&#xff08;文档段落&#xff1a;3-79…...

屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!

5月28日&#xff0c;中天合创屋面分布式光伏发电项目顺利并网发电&#xff0c;该项目位于内蒙古自治区鄂尔多斯市乌审旗&#xff0c;项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站&#xff0c;总装机容量为9.96MWp。 项目投运后&#xff0c;每年可节约标煤3670…...

laravel8+vue3.0+element-plus搭建方法

创建 laravel8 项目 composer create-project --prefer-dist laravel/laravel laravel8 8.* 安装 laravel/ui composer require laravel/ui 修改 package.json 文件 "devDependencies": {"vue/compiler-sfc": "^3.0.7","axios": …...

Python ROS2【机器人中间件框架】 简介

销量过万TEEIS德国护膝夏天用薄款 优惠券冠生园 百花蜂蜜428g 挤压瓶纯蜂蜜巨奇严选 鞋子除臭剂360ml 多芬身体磨砂膏280g健70%-75%酒精消毒棉片湿巾1418cm 80片/袋3袋大包清洁食品用消毒 优惠券AIMORNY52朵红玫瑰永生香皂花同城配送非鲜花七夕情人节生日礼物送女友 热卖妙洁棉…...

算法岗面试经验分享-大模型篇

文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer &#xff08;1&#xff09;资源 论文&a…...

Yolov8 目标检测蒸馏学习记录

yolov8系列模型蒸馏基本流程&#xff0c;代码下载&#xff1a;这里本人提交了一个demo:djdll/Yolov8_Distillation: Yolov8轻量化_蒸馏代码实现 在轻量化模型设计中&#xff0c;**知识蒸馏&#xff08;Knowledge Distillation&#xff09;**被广泛应用&#xff0c;作为提升模型…...

初探Service服务发现机制

1.Service简介 Service是将运行在一组Pod上的应用程序发布为网络服务的抽象方法。 主要功能&#xff1a;服务发现和负载均衡。 Service类型的包括ClusterIP类型、NodePort类型、LoadBalancer类型、ExternalName类型 2.Endpoints简介 Endpoints是一种Kubernetes资源&#xf…...

华为OD机考-机房布局

import java.util.*;public class DemoTest5 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseSystem.out.println(solve(in.nextLine()));}}priv…...