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

Solution1:把问题想的太简单了,参考书上答案(P166-P170)如下:
书上的思路和算法就很好啊~

class CloseNumber {
public:vector<int> getCloseNumber(int x) {// write code herevector<int> res;int smaller = getSmaller(x), bigger = getBigger(x);res.push_back(smaller);res.push_back(bigger);return res;}int getBigger(int n) {int c = n, res = 0, c0 = 0, c1 = 0;while(((c & 1) == 0) && (c != 0)) {c0++;c >>= 1;}while((c & 1) == 1) {c1++;c >>= 1;}if(c0 + c1 == 31 || c0 + c1 == 0) //1111...000这种数无更大值(首位是符号位)return -1;                   //0这个数无较小数res = n + (1 << c0) + (1 << (c1 - 1)) - 1;return res;}int getSmaller(int n) {int c = n, res = 0, c0 = 0, c1 = 0;while((c & 1) == 1) {c1++;c >>= 1;}if(c == 0) //像7(111)这类数无较小值return -1;while(((c & 1) == 0) && (c != 0)) {c0++;c >>= 1;}if(c0 + c1 == 31 || c0 + c1 == 0) //1111...000这种数无更大值(首位是符号位)return -1;                   //0这个数无较小数res = n - (1 << c1) - (1 << (c0 - 1)) + 1;return res;}
};

程序员面试金典——5.3最接近的数相关推荐

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

    最接近的数 牛客网 程序员面试金典 C++ Python 题目描述 有一个正整数,请找出其二进制表示中1的个数相同.且大小最接近的那两个数.(一个略大,一个略小) 给定正整数int x,请返回一个ve ...

  2. 《程序员面试金典》+《算法导论》

    <程序员面试金典>+<算法导论> 因为最近可能会面临一波面试,但是自己各种算法以及常见的问题的熟悉程度感觉还不够,但是由前几次的代码优化经验来看,算法优化可以说是代码优化的重中 ...

  3. 程序员面试金典--第k个数

    程序员面试金典--第k个数 题目描述 有一些数的素因子只有3.5.7,请设计一个算法,找出其中的第k个数. 给定一个数int k,请返回第k个数.保证k小于等于100. 测试样例: 3 返回:7 逐个 ...

  4. 程序员面试金典 - 面试题 08.13. 堆箱子(DP)

    1. 题目 堆箱子.给你一堆n个箱子,箱子宽 wi.深 di.高 hi. 箱子不能翻转,将箱子堆起来时,下面箱子的宽度.高度和深度必须大于上面的箱子. 实现一种方法,搭出最高的一堆箱子.箱堆的高度为每 ...

  5. 程序员面试金典 - 面试题 17.08. 马戏团人塔(最长上升子序 DP/二分查找)

    文章目录 1. 题目 2. 解题 2.1 超时解 2.2 二分查找 1. 题目 有个马戏团正在设计叠罗汉的表演节目,一个人要站在另一人的肩膀上.出于实际和美观的考虑,在上面的人要比下面的人矮一点且轻一 ...

  6. 《程序员面试金典》解题目录(更新完毕)

    题目来源于LeetCode上的<程序员面试金典>,这里做一个目录方便大家查找.另外有本人的LeetCode解题目录.<剑指Offer>解题目录.LintCode代码能力测试CA ...

  7. C#LeetCode刷题-程序员面试金典

    本文由 比特飞 原创发布,欢迎大家踊跃转载. 转载请注明本文地址:C#LeetCode刷题-程序员面试金典 | .Net中文网. C#LEETCODE刷题概述 概述 所有LeetCode程序员面试金典 ...

  8. 程序员面试金典——18.13 最大字母矩阵

    程序员面试金典--18.13 最大字母矩阵 在牛客网上把此题的难度给大大降低了......... Solution1: 参考网址:https://www.nowcoder.com/questionTe ...

  9. 程序员面试金典——18.12最大和子矩阵

    程序员面试金典--18.12最大和子矩阵 Solution1: 参考网址: [1]https://www.cnblogs.com/GodA/p/5237061.html 思想讲的很清楚~ [2]htt ...

最新文章

  1. mybatis mysql 存储过程_Mysql 存储过程+Mybatis调用实现插入操作例子 | 学步园
  2. mysql老是下载了用不了_mysql - 下载与安装
  3. Local模式下Spark程序只输出关键信息
  4. Python高级教程-生成器
  5. JavaScript中this详解
  6. 《c语言从入门到精通》看书笔记——第16章 网络套接字编程(上)——网络
  7. [MyBatisPlus]雪花算法
  8. 计算机毕业设计源码分享双鱼林,计算机毕业课程设计论文源码-057双鱼林asp教务选课信息系统...
  9. javaScript深克隆(deepClone(origin,target))
  10. java查看eth转账状态_eth交易记录input解析
  11. SQL项目实战练习:淘宝用户行为数据分析实战
  12. 聚石塔服务器 微信,聚石塔云服务器
  13. 2019年日历假期添加
  14. 好的设计的10个原则
  15. code runner 中文使用指南
  16. 1017. Staircases
  17. 大学计算机作业互评评语简短,大学学生互评评语100字简短
  18. 客制化 GH60 XD60 像 Poker 一样的 60% 机械键盘 (2) 采购以及组装
  19. 使用switch语句根据消费金额计算折扣
  20. simulink笔记——DSSS直接序列扩频

热门文章

  1. 【贪心School】机器学习课程笔记
  2. 《统计学基本概念和方法》读书笔记+读后感(1)
  3. 【OpenCV】复制、切割出图像ROI区域
  4. android xutils3 jar,android xutils3 Android基于开源项目xutils3实现下载
  5. nbu备份oracle rac,利用NETBACKUP将备份写到磁盘上
  6. python强制释放内存_强制Python释放对象以释放内存
  7. python web开发框架 支持windows_基于Python的Web开发框架研究_曾浩
  8. 电脑位数怎么看_怎么用电脑播放4K视频?怎么用电脑看4K电影? 附带详细教程...
  9. memcached教程_Memcached教程
  10. 霍夫曼算法_霍夫曼编码算法