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

给宝宝做衣服网站好中国工程建设网官方网站

给宝宝做衣服网站好,中国工程建设网官方网站,校园推广,提供温州手机网站制作哪家好题目1#xff1a;下一个数 给定一个正整数#xff0c;找出与其二进制表达式中1的个数相同且大小最接近的那两个数#xff08;一个略大#xff0c;一个略小#xff09;。 示例#xff1a; 输入#xff1a;num 2#xff08;或者0b10#xff09; 输出#xff1a;[4,…题目1下一个数 给定一个正整数找出与其二进制表达式中1的个数相同且大小最接近的那两个数一个略大一个略小。 示例 输入num 2或者0b10  输出[4, 1] 或者[0b100, 0b1]  输入num 1  输出[2, -1] 解题思路 1.先用bitset将num的32位二进制表示出来存放到数组中方便可以遍历 2.较大值从左往右找到第一个01将其转换成10再将右侧剩余的1全都移动到最低位 eg.0101110   -1000111 3.较小值从左往右找到第一个10将其转换成01 再将右侧剩余的1全都移动到最高位 eg.1001110   -0111100 4.bitset数组的下标是从低位开始的也就是从右往左进行遍历 源代码如下 class Solution { public:vectorint findClosedNumbers(int num) {bitset32 smaller(num);//将二进制表示出来bitset32 bigger(num);//找较小值int a-1;//a初始化为-1for(int i1;i32;i){//找到10变成01if(smaller[i]1 smaller[i-1]0){smaller.flip(i);//flip(i)将第i位上的数字进行翻转 0转11转0smaller.flip(i-1);//将右侧剩余的1全移动到高位//相当于left和right的位互换for(int left0,righti-2;leftright;){//从低位找到第一个不为0的while(leftright smaller[left]0) left;//从高位找到第一个不为1的while(leftright smaller[right]1) right--;//位翻转smaller.flip(left);smaller.flip(right);}//smaller.to_ulong() 将数组smaller转成unsigned long类型的值//再强转成int类型a(int)smaller.to_ulong();break;}}//找较大值int b-1;//在找较大值时bigger要保证正数最高符号位保证为0最大正数为21474836472进制31个1i只能到第30位如果写 i32 会出现上溢所以这里与较小值不同的点在于要将i32改为i31,防止溢出for(int i1;i31;i){//找到01变成10if(bigger[i]0 bigger[i-1]1){bigger.flip(i);bigger.flip(i-1);//将右侧剩余的1全移动到低位for(int left0,righti-2;leftright;){while(leftright bigger[left]1) left;while(leftright bigger[right]0) right--;bigger.flip(left);bigger.flip(right);}b(int)bigger.to_ulong();break;}}return {b,a};} }; 题目2整数转换 编写一个函数确定需要改变几个位才能将整数A转成整数B。 示例 输入A 29 或者0b11101, B 15或者0b01111  输出2  输入A 1B 2  输出2 解题思路 1.用bitset将整数A和B的32位 二进制表示出来存放在数组里进行遍历 2.遇到aa[i]!bb[i]说明需要转换count即可 源代码如下 class Solution { public:int convertInteger(int A, int B) {bitset32 aa(A);//A的二进制bitset32 bb(B);//B的二进制int i0;//都是32位所以只需要一个下标进行遍历int count0;//用来记录需要改变的次数while(i32){//遇到当前位不相等的就需要转换countif(aa[i]!bb[i]){count;}i;}//返回countreturn count;} }; 题目3配对交换 编写程序交换某个整数的奇数位和偶数位尽量使用较少的指令也就是说位0与位1交换位2与位3交换以此类推。 示例 输入num 2或者0b10  输出 1 (或者 0b01) 解题思路 1.用bitset将num的二进制保存到数组中便于用下标进行访问 2.从低到高两两进行交换i2 3.将最后的结果用to_ulong()函数先转成unsigned long类型再强转成int类型 源代码如下 class Solution { public:int exchangeBits(int num) {bitset32 bit(num);int i0;//从低到高进行两两交换//注意因为要访问i1所以循环结束条件为i31,防止越界while(i31){int tempbit[i];bit[i]bit[i1];bit[i1]temp;i2;//i每次跳两个位数}//bit.to_ulong() 将二进制数转成unsigned long类型的值//再强转成int类型就可以返回了return (int)bit.to_ulong();} };
http://www.hkea.cn/news/14580498/

相关文章:

  • 手机高端网站开发合肥公司网站建设价格低
  • vk社交网站做婚介网站服务器租用报价
  • 网站开发描述备案中又需要建设网站
  • 杭州程序员培训班新闻类的网站如何做优化、
  • 直播网站开发教程网站开发课题研究背景
  • 太原网站关键词排名开发制作小程序公司
  • 昨天正常的网站突然显示建设中西安论坛
  • eclipse做的网站企业风险查询平台
  • 自己怎么做返利网站吗律师做哪个网站好
  • 四川和城乡建设厅网站东莞网络营销专业服务
  • 汕头企业免费建站wordpress 中文主题
  • 门户网站建设创新系统和网站哪个简单一点
  • 做公司网站哪家好重庆九龙坡区wordpress怎么分段
  • 案例学习网站建设方案摸摸学校领取流量网站
  • 云浮东莞网站建设是做网站好还是做游戏好
  • 大连的网站设计公司电话建立网站的目标
  • 培训教育类网站模板怎么查那些人输入做网站
  • thinkphp网站开发服务建筑工程网课视频
  • html网站首页图片切换seo优化一般多少钱
  • 网站建设 徐州清远市住房和城乡建设局门户网站
  • 专业网站建设信息做教育培训的网站
  • 怎么做自己的发卡网站吉林市做网站的公司
  • 网站做的好看术语自用网站开发费用会计分录
  • 图书馆 网站建设网页设计师报名费
  • 福建省住房城乡建设部网站99作文网
  • 分布式网站开发wordpress文章调用代码
  • 企业网站推广方案设计做网站常规语言
  • 农业农村部农田建设管理司网站打开连接 wordpress
  • 网站seo优化多少钱qq网页版输入账号登录
  • 甘肃温室大棚建设网站山西响应式网页建设哪家有