【程序员面试金典】有一个正整数,请找出其二进制表示中1的个数相同、且大小最接近的那两个数。(一个略大,一个略小)

找出二进制表示中1的个数相同,且大小最接近的那两个数 public int getNext(int n) { /* 计算c0和c1 */ int c=n; int c0=0; int c1=0; while(((c&1)==0) && (c!=0)) { c0++; c>>=1; } while((c&1)==1) { c1++; c>>=1; } /* * 错误:若n==1111....1111000....0 阅读详情

题目描述

有一个正整数,请找出其二进制表示中1的个数相同、且大小最接近的那两个数。(一个略大,一个略小)

给定正整数int x,请返回一个vector,代表所求的两个数(小的在前)。保证答案存在。

测试样例:

2
返回:[1,4]

class CloseNumber {
public:
    vector<int> getCloseNumber(int x) {
        // write code here
     vector <int> result;
     int c01=0;//拖尾0的个数
     int c11=0;//拖尾0左方全为1的个数
      
     int c1=0;//拖尾1的个数
     int c0=0;//拖尾1左方全为0的位个数
     int c = x,d=x;//临时变量
//分别求取
     while(((c & 1) == 0) && (c!=0)){
         c01 ++;
         c >>= 1;
     }
     while((c & 1)==1){
         c11 ++;
         c >>= 1;
     }
     while((d & 1)==1){
         c1 ++;
         d >>= 1;
     }
     while(((d & 1) == 0) && (d!=0)){
         c0 ++;
         d >>= 1;
     }
    
  
     result.push_back((x - (1<<(c1))-(1<<(c0-1)) +1));
     result.push_back((x + (1<<(c11-1)) + (1<<c01) -1));
     return result;
    }
};

 

程序员面试金典: 9.5位操作 5.3给定正整数,找出与其二进制表示中1的个数相同、且大小最接近的两个数 #include #include #include #include #include #include using namespace std; /* 问题:给定一个正整数,找出与其二进制表示中1的个数相同、且大小最接近的那两个数(一个略大,一个略小) 分析:假设这个数是10011,来找规律。 寻找略小的数:应该是将最低位的1向右移动:如果该最低位的1不是在最后一 阅读详情

相关推荐

程序员面试金典-5.3.最接近的数

一、题目描述 有一个正整数,请找出其二进制表示中1的个数相同、且大小最接近的那两个数。(一个略大,一个略小) 给定正整数int x,请返回一个vector,代表所求的两个数(小的在前)。保证答案存在。 测试 2 返回:[1,4] 样例: 二、解题思路 1.如果求解比原数字较小的数,首先需要从左往右开始找到0出现后的第一个1出现的位置(因为求的是大小最接近,所以寻找0出现后的第一

lemon2631的博客 518

给定一个正整数,找出与其二进制表示中1的个数相同,且大小最接近的那两个数...

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34284188的博客 958

金融数据自动化:从同花顺API到Excel的智能转换之旅

本文详细介绍了如何利用同花顺API实现金融数据自动化处理,并将其智能转换为Excel格式的全流程。通过Python编程和Excel高级技巧,读者可以掌握从数据获取、清洗到输出的完整解决方案,大幅提升金融数据分析的效率和准确性。文章特别强调了同花顺API的使用技巧和Excel自动化输出的最佳实践。

sql99的博客 461

程序员面试金典--面试27之有一个正整数,请找出其二进制表示中1的个数相同、且大小最接近的那两个数

题目描述 有一个正整数,请找出其二进制表示中1的个数相同、且大小最接近的那两个数。(一个略大,一个略小) 给定正整数int x,请返回一个vector,代表所求的两个数(小的在前)。保证答案存在。 测试样例: 2 返回:[1,4] 思路:这道题没想到什么好办法,只想到了暴力法,先判断这个数二进制有几个1,然后前面那个数从x-1开始试,后面那个数从x+1开始试,看那个数的二进制中

hj605635529的博客 1502

STM32掉电保存配置参数技巧

本文介绍了使用STM32内置备份寄存器(BKP)实现掉电保存配置参数的方法。相比外接EEPROM或Flash,备份寄存器无需外设但存储容量有限,需通过VBAT引脚连接纽扣电池供电。文章详细说明了初始化步骤,包括使能PWR时钟、允许访问备份寄存器等操作,并提供了RTC初始化的代码示例。同时介绍了HAL库中读写备份寄存器的函数使用方法,包括HAL_RTCEx_BKUPWrite和HAL_RTCEx_BKUPRead函数的具体参数和调用示例。该方法适用于需要小容量数据掉电保存的应用场景。

hanhanhan233的博客 946

夸克缓存视频合并小工具

原理 使用windows的命令行的copy命令来合并 copy /b 0+1+2+3 new.ts 分析缓存目录结构,发现都是一个m3u8文件带一个同名文件夹 所以分析m3u8并把原来的路径换成这个缓存文件夹路径并按顺序合并即可。 其中碰到的难点是Qprocess在windows不好使,索性直接存成.bat批处理文件再执行 还有就是中文问题,具体在代码里都说了。 代码 (环境Qt5.7.0) 这是mainwindow.h #ifndef MAINWINDOW_H #defin.

natural_Caduceus 1万+

算法 - 求一个正整数的二进制表示中1的个数(C++)

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.youkuaiyun.com/jiangjunshow也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #include &a

yffhhffv的博客 679

从零搭建ECG心电图仪:模拟前端电路设计与噪声对抗实战

在电子工程和生物医学信号处理领域,微弱信号的采集与放大是核心挑战。其基本原理在于利用高精度模拟电路,从强大的环境噪声中提取出有用的差分信号。这项技术的核心价值在于将理论上的传感器信号转化为稳定、可靠的可用数据,是连接物理世界与数字系统的关键桥梁。在医疗监护、工业传感和科学测量等场景中,高性能的模拟前端设计直接决定了整个系统的精度与可靠性。本文聚焦于生物电信号采集这一具体应用,深入探讨如何运用差分放大器、低通滤波器和陷波滤波器等经典模块,构建一个能够有效对抗工频干扰和接触噪声的实用电路,最终实现从人体体表清晰

weixin_30616969的博客 459

(笔试题)二进制1的个数相同的距离最小数

题目: 输入:整数A 输出:整数B 条件:A和B的二进制1的个数相同,且A和B之间的距离|A-B|最小。 思路: 题目没有说明整数类型,这里认为是带符号的整数,即区分正负数。 根据题意,A和B的二进制1的个数相同,且要求距离最小,那么A和B的差别就在于相邻的bit位,如1100和1010,0011和0101等。 当A的最后一位(低位)为0,则找到最后(右边)一位1,然后将该1与左边的...

weixin_33950035的博客 278

ROS+Gazebo仿真入门:用TurtleBot3模拟扫地机器人全流程

本文详细介绍了如何利用ROS和Gazebo仿真平台,以TurtleBot3 Waffle Pi模型为核心,从零搭建并运行一个虚拟扫地机器人的全流程。内容涵盖仿真环境搭建、世界与机器人模型解析,并重点演示了SLAM建图、自适应蒙特卡罗定位以及全局与局部路径规划等核心算法实战,为机器人算法开发与验证提供了高效、低成本的解决方案。

sre5engineer的博客 1087

中文核心:swin transformer 农作物病虫害识别 完整代码数据

中文核心:swin transformer 农作物病虫害识别

939

程序员面试金典 - 面试题 05.04. 下一个数(线性扫描)

文章目录1. 题目2. 解题2.1 STL2.2 线性扫描 1. 题目 下一个数。给定一个正整数,找出与其二进制表达式中1的个数相同且大小最接近的那两个数(一个略大,一个略小)。 例1: 输入:num = 2(或者0b10) 输出:[4, 1] 或者([0b100, 0b1]) 例2: 输入:num = 1 输出:[2, -1] 提示: num的范围在[1, 2147483647]...

Michael是个半路程序员 1720

写给开发人员的实用密码学 - Hash算法

说到Hash(哈希),开发人员应该不陌生,比如Hash表是一种非常常用的数据结构,通过Hash表能够根据键值快速找到数据。哈希函数将文本(或其他数据)映射为整数,从而能够提高检索效率。密...

云水木石 1503

最接近的数 牛客网 程序员面试金典 C++ Python

最接近的数 牛客网 程序员面试金典 C++ Python 题目描述 有一个正整数,请找出其二进制表示中1的个数相同、且大小最接近的那两个数。(一个略大,一个略小) 给定正整数int x,请返回一个vector,代表所求的两个数(小的在前)。保证答案存在。 测试样例: 2 返回:[1,4] C++...

dianwonin4433的博客 86

【问题解决】Python 异步 asyncio 卡死、协程不执行、任务泄漏,保姆级排错

本文详细分析了Python异步编程中常见的卡死、协程不执行和任务泄漏问题。文章首先列举了这些问题的典型表现,如程序卡住、死锁、任务未启动等。然后深入剖析了各类问题的根源,包括同步阻塞操作、未正确await、资源未清理等。针对这些问题,文章提供了两套解决方案:一是异步编程最佳实践,包括安全协程执行、带超时的执行、任务清理等实用方法;二是死锁检测和预防机制,通过锁管理和等待图分析来避免死锁。文章还包含可直接使用的代码示例,帮助开发者快速定位和解决异步编程中的常见问题。

博客 450

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

程序员面试金典 - 面试题 05.04. 下一个数

题目难度: 中等 原题链接 今天继续更新程序员面试金典系列, 大家在公众号 算法精选 里回复 面试金典 就能看到该系列当前连载的所有文章了, 记得关注哦~ 题目描述 下一个数。给定一个正整数,找出与其二进制表达式中 1 的个数相同且大小最接近的那两个数(一个略大,一个略小)。 示例 1: 输入:num = 2(或者 0b10) 输出:[4, 1] 或者([0b100, 0b1]) 示例 2: 输入:num = 1 输出:[2, -1] 提示: num 的范围在[1, 214748364.

随便发挥的博客 192

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

程序员面试金典——面试题 05.04. 下一个数

一、题目介绍 下一个数。给定一个正整数,找出与其二进制表达式中1的个数相同且大小最接近的那两个数(一个略大,一个略小)。 示例1: 输入:num = 2 输出:[4, 1] 示例2: 输入:num = 1 输出:[2, -1] 提示: 1、num的范围在[1, 2147483647]之间; 2、如果找不到前一个或者后一个满足条件的正数,那么输出 -1。 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/closed-number-l...

Asher 409

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

《程序员面试金典(第6版)》面试题 05.04. 下一个数

这道题不算一道特别难的题,但也不算简单。如果你对位运算稍微不熟悉一点了话,你也看不出这样的规律。其实代码也是不好去写的。掌握了这些知识后,代码才变得简单易懂了些。

weixin_49503250的博客 321

程序员面试金典---5.4 下一个数

目录题目:下一个数一、思路二、解法1.位操作法: 题目:下一个数 给定一个正整数,找出与其二进制表达式中 1 的个数相同且大小最接近的那两个数(一个略大,一个略小)(比该数大且最接近的数 和 比该数小且最接近的数) 一、思路 1.蛮力法: 在n的二进制表示中,数出1的个数,然后增加或减小,直至找到1的个数相同的数字。 2.位操作法:取得后一个较大的数 现在给定一个数n和两个位置i和j,假设将位i从1翻转为0,位j从0翻转成1。若i>j,n就会减小;若i<j,n则会变大。 结论: 若将某个0翻

weixin_44123098的博客 584

二进制的算法题

程序员面试金典:最接近的数、整数转化: 1.最接近的数 题目描述 有一个正整数,请找出其二进制表示中1的个数相同、且大小最接近的那两个数。(一个略大,一个略小) 给定正整数int x,请返回一个vector,代表所求的两个数(小的在前)。保证答案存在。 测试样例: 2 返回:[1,4] 思路:将x分别往后和往前移,用Integer

wsasy12345的博客 1187

最接近的数

有一个正整数,请找出其二进制表示中1的个数相同、且大小最接近的那两个数。(一个略大,一个略小) 给定正整数int x,请返回一个vector,代表所求的两个数(小的在前)。保证答案存在。 测试样例: 2 返回:[1,4] 根据《程序员面试金典》上的位算数解法写的。 c01是拖尾0的...

chy010131的博客 355

【程序员面试金典】面试题 05.04. 下一个数

【程序员面试金典】面试题 05.04. 下一个数

❀雾里看花花里看雾❀ 130

金典——最接近的数__

题目描述 有一个正整数,请找出其二进制表示中1的个数相同、且大小最接近的那两个数。(一个略大,一个略小) 给定正整数int x,请返回一个vector,代表所求的两个数(小的在前)。保证答案存在。 测试样例: 2 返回:[1,4] 思路:直接暴力。 import java.util.*; public class CloseNumber {

sinat_24048051的博客 307

程序员面试金典:最接近的数、整数转化

1.最接近的数 题目描述 有一个正整数,请找出其二进制表示中1的个数相同、且大小最接近的那两个数。(一个略大,一个略小) 给定正整数int x,请返回一个vector,代表所求的两个数(小的在前)。保证答案存在。 测试样例: 2 返回:[1,4] 2.整数转化

热爱技术、喜欢学习、乐于分享 927

程序员面试金典 5.3

Flip Bit to Win:将一个整数中的某一比特位置位,输入该整数的二进制表示中最长的比特位为1的长度。

RayoNicks的博客 215
上一篇: 【C++笔记】OpenCV图像Mat格式转换为QT中QImage并显示zai Qlabel上
下一篇: 【程序员面试金典】有一个介于0和1之间的实数,类型为double,返回它的二进制表示。
HelloZEX
博客等级 码龄11年 486粉丝 264原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值