算法篇:求1的个数
时间:2022-07-25
本文章向大家介绍算法篇:求1的个数,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
算法:
核心在于单个数字的1的个数的计算,其他的题目都是基于这个基础来做的操作。
题目1:
https://leetcode-cn.com/problems/number-of-1-bits/
代码实现:
func hammingWeight(num uint32) int {
count := 0
for i := 0; i < 32; i++ {
if num&(1<<i) != 0 {
count++
}
}
return count
}
// 算法:
// 利用单个bit上面的 a&1=1 表示a=1;a&1=0 表示a=0
执行结果:
题目2:
https://leetcode-cn.com/problems/sort-integers-by-the-number-of-1-bits/
代码实现:
func sortByBits(arr []int) []int {
tmp := make(map[int][]int)
nums := []int{}
for _, a:=range arr {
n:=getCount(a)
v,ok:=tmp[n]
if !ok {
v = []int{a}
tmp[n] = v
nums = append(nums,n)
} else {
v = append(v,a)
tmp[n] = v
}
}
// 利用map将数组按照升序的方式排序
sort.Ints(nums)
res := []int{}
for _,v := range nums{
// 相同位数的数组里面也需要按照升序排序
sort.Ints(tmp[v])
res =append(res,tmp[v]...)
}
return res
}
func getCount(a int) int {
c := 0
for a != 0 {
if a&1 == 1 {
c++
}
a = a>>1
}
return c
}
执行结果:
题目3:
https://leetcode-cn.com/problems/prime-number-of-set-bits-in-binary-representation/
代码实现:
func countPrimeSetBits(L int, R int) int {
// 质数是只能被1和自己整除,R最大值是10^6,也就是2^20,所以质数如下
s := []int{2,3,5,7,11,13,17,19}
m := make(map[int]int)
for _,v:=range s {
m[v] = v
}
// 计算每个数中1的个数
c := 0
for i:=L;i<=R;i++ {
t := numCount(i)
if _,ok := m[t];ok {
c++
}
}
return c
}
func numCount(num int) int {
c := 0
for i:=0;i<64;i++ {
if num&(1<<i) != 0 {
c++
}
}
return c
}
执行结果:
- 【Qt】]Qt5中文乱码
- 防止连接Mysql超时,JDBC探活配置
- 剑指offer——面试题10输入一个十进制整数,统计其中二进制1的个数
- 剑指offer——面试题9计算斐波纳切第n个数
- 剑指 offer——面试题8求旋转数组的最小值
- MYSQL INNODB表压缩
- 剑指offer——年龄排序问题
- Mysql Group Replication介绍
- 剑指offer——快速排序
- 架构高性能网站秘笈(四)——反向代理缓存
- 架构高性能网站秘笈(一)——了解衡量网站性能的指标
- MYSQL5.6&5.7编译安装
- 架构高性能网站秘笈(三)——浏览器缓存
- 剑指 offer代码解析——面试题39判断平衡二叉树(高效方法)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 我要偷偷的学Python,然后惊呆所有人(第一天)
- Python 中的上下文管理
- 我是如何阅读JDK源码的?
- Docker以root身份登录到容器
- SOAPUI访问WEBSERVICE案例
- 编译安装nginx
- 磁盘高可用解决方案(DBA).md
- Python 3.7 + HttpRunner 初探
- 数据库PostrageSQL-服务器配置(复制)
- 高可用服务解决方案(DBA).md
- dotnet 使用 Interlocked 实现一个无锁的快速无序仅写集合
- 利用Python将gff3转换成gtf格式
- 单细胞DoHeatmap画热图标签出界
- FastSpar | 用更快的 SparCC 进行微生物组相关性分析
- GO和KEGG富集倍数(Fold Enrichment)如何计算