2022-03-10:限制:0 <= start <= end,0 <= target <= 64。 [start,end]范围上的数字,有多少数字二进制中1的个数等于target。 真实面试题,被问
2022-03-10:限制:0 <= start <= end,0 <= target <= 64。
[start,end]范围上的数字,有多少数字二进制中1的个数等于target。
真实面试题,被问到了四五次,包括华为。
答案2022-03-10:
求0到x等于target的个数,然后做差。
代码用golang编写。代码如下:
package main
import "fmt"
func main() {
ret := nums4(33281731, 204356810, 17)
fmt.Println(ret)
}
func nums4(start, end, target int) int {
if start < 0 || end < 0 || start > end || target < 0 {
return -1
}
anse := process4(63, target, end)
if start == 0 {
return anse
} else {
anss := process4(63, target, start-1)
return anse - anss
}
}
func process4(index, rest, num int) int {
if rest > index+1 {
return 0
}
if rest == 0 {
return 1
}
if (num & (1 << index)) == 0 {
return process4(index-1, rest, num)
} else {
return c(index, rest) + process4(index-1, rest-1, num)
}
}
// 求C(N,A)的解
// N! / (A! * (N - A)!)
// 即 : (A+1 * A+2 * ... * N) / (2 * 3 * 4 * (N-A))
// 为了不溢出,每一步求一个最大公约数,然后消掉
func c(n, a int) int {
if n < a {
return 0
}
up := 1
down := 1
for i, j := a+1, 2; i <= n || j <= n-a; {
if i <= n {
up *= i
i++
}
if j <= n-a {
down *= j
j++
}
gcd := gcd0(up, down)
up /= gcd
down /= gcd
}
return up / down
}
// 求m和n的最大公约数
func gcd0(m, n int) int {
if n == 0 {
return m
} else {
return gcd0(n, m%n)
}
}
执行结果如下:

2022-03-10:限制:0 <= start <= end,0 <= target <= 64。 [start,end]范围上的数字,有多少数字二进制中1的个数等于target。 真实面试题,被问的更多相关文章
- VIPKID:笔试题(数组中和为0的一对数的数量,十进制转二进制中1的个数)
1. 求数组中的和为0 的一对数的数量 注意,需要用到set import java.util.Scanner; public class Main{ public static void main( ...
- 剑指offer编程题Java实现——面试题10二进制中1的个数
题目: 请实现一个函数,输入一个整数,输出该整数二进制表示中1的个数.例如,把9表示成二进制是1001,有2位是1,该函数输出2解法:把整数减一和原来的数做与运算,会把该整数二进制表示中的最低位的1变 ...
- P78、面试题10:二进制中1的个数
题目:请实现一个函数,输入一个整数,输出该数二进制表示中1的个数.例如把9表示成二进制1001,有2位是1.因此如果输入9,该函数输出2. 相关题目: 1)用一条语句判断一个整数是不是2的整数次方.一 ...
- (剑指Offer)面试题10:二进制中1的个数
题目: 输入一个整数,输出该数二进制表示中1的个数.其中负数用补码表示. 思路: 很明显,这道题考察的是位运算. 1.依次将整数右移,判断整数最后一位是否为1(&1): 问题:如果该整数为负数 ...
- 《剑指offer》面试题10 二进制中1的个数 Java版
书中方法一:对于每一位,用1求与,如果为1表明该位为1.一共要进行32次,int4字节32位. public int check(int a){ int result = 0; int judge = ...
- 剑指offer-面试题10:二进制中1的个数
题目:请实现一个函数,输入一个函数,输出该数二进制表示中1的个数.例如把9 表示成二进制是1001,有2位是1.因此如果输入9,该函数输出2. 这道题最典型的方法就是用移位统计,就比如统计9的二进制1 ...
- POJ 3252 区间内一个数的二进制中0的数量要不能少于1的数量(数位DP)
题意:求区间内二进制中0的数量要不能少于1的数量 分析:很明显的是数位DP: 菜鸟me : 整体上是和数位dp模板差不多的 , 需要注意的是这里有前导零的影响 , 所以需要在dfs()里面增加zor ...
- 在Ubuntu14.10中部署Hadoop2.6.0单节点伪分布集群
1. 环境信息如下: ubuntu:14.10 jdk:openjdk-1.7.0 hadoop:2.6.0 2. 下载hadoop2.6.0, http://apache.fayea.com/had ...
- Centos7 编译安装 Nginx PHP Mariadb Memcached 扩展 ZendOpcache扩展 (实测 笔记 Centos 7.3 + Mariadb 10.1.20 + Nginx 1.10.2 + PHP 7.1.0 + Laravel 5.3 )
环境: 系统硬件:vmware vsphere (CPU:2*4核,内存2G,双网卡) 系统版本:CentOS-7-x86_64-Minimal-1611.iso 安装步骤: 1.准备 1.0 查看硬 ...
- ubuntu 10.04 安装qt 5.0.2
转自ubuntu 10.04 安装qt 5.0.2 从qt project网站下载下来最新的qt5.0.2套件,发现是个.run文件,添加x属性,然后直接sudo ./****.run, 提示 /l ...
随机推荐
- 【Beat】Scrum Meeting 1
时间:2021年6月26日 1.各个成员今日完成的任务以及贡献小时数 姓名 今日完成任务 贡献小时数 鑫 编写软件的功能测试方案文档,录制视频演示软件系统安装配置过程 4 荣娟 编写软件的功能测试方案 ...
- vue路由重复跳转导致控制台报错
重复跳转了同一个页面,导致空值台报错了! 解决思路: 方案1:在路由跳转时捕获错误. 1.1 全局捕获处理 //index.js import VueRouter from 'vue-router' ...
- celery在Django项目中的使用案例
一.逻辑分析 第一步:在项目根目录新建包 第二步:在使用提交异步任务的位置,导入使用即可 视图函数中使用,导入任务 任务.delay() # 提交任务 第三步:启动worker,如果有定时任务,启动b ...
- Resistance distance 图上2个节点的等效电阻求解算法
目录 如何计算正方体网络中(乃至更一般的图)2个节点间的等效电阻? 公式的正确性很容易得到验证 如何计算Weighted matrix的Resistance matrix 我验证了特例,是对的,但是对 ...
- Prometheus Alertmanager生产配置趟过的坑总结
简介 Alertmanager 处理由客户端应用程序(如 Prometheus server)发送的警报.它负责去重(deduplicating),分组(grouping),并将它们路由(routin ...
- MySQL 慢查询优化案例
一.慢查询优化基本步骤 [1]先运行看看是否真的很慢,注意设置SQL_NO_CACHE(查询时不使用缓存):[2]where条件单表查,锁定最小返回记录表.这句话的意思是把查询语句的 where都应用 ...
- OpenAI Kubernetes 相关博文读后笔记
一.概述 最近 ChatGPT 和其公司 OpenAI 特别火:ChatGPT 3, ChatGPT 3.5, New Bing, ChatGPT 4... 怀着学习的心态,这几天访问了 OpenAI ...
- vulnhub靶场之WIRELESS: 1
准备: 攻击机:虚拟机kali.本机win10. 靶机:Wireless: 1,下载地址:https://download.vulnhub.com/wireless/Mystiko-Wireless. ...
- 系统论——复杂适应系统CAS(三)
美国的圣塔菲研究所一直是复杂性研究的中心.1994年,约翰·霍兰德在圣菲研究所举办的吴拉姆纪念讲座中做了名为"隐秩序"的著名演进,而后,出版了<隐秩序-适应性造就复杂性> ...
- day120:MoFang:修复宠物喂食饱食度不增加的BUG&修复宠物死亡导致数据错乱的BUG
目录 BUG1:修复宠物喂食饱食度未增加的BUG BUG2:修复当用户拥有2个宠物时,如果第1个宠物挂了,会出现第二个宠物变成第1个宠物的情况,会导致数据发生混乱出现bug BUG1:修复宠物喂食饱食 ...