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

常州自助做网站链友之家

常州自助做网站,链友之家,佛山网站优化平台,平面设计工作题目1:下一个数 给定一个正整数,找出与其二进制表达式中1的个数相同且大小最接近的那两个数(一个略大,一个略小)。 示例: 输入:num 2(或者0b10) 输出:[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:vector<int> findClosedNumbers(int num) {bitset<32> smaller(num);//将二进制表示出来bitset<32> bigger(num);//找较小值int a=-1;//a初始化为-1for(int i=1;i<32;i++){//找到10,变成01if(smaller[i]==1 && smaller[i-1]==0){smaller.flip(i);//flip(i)将第i位上的数字进行翻转 (0转1,1转0)smaller.flip(i-1);//将右侧剩余的1,全移动到高位//相当于left和right的位互换for(int left=0,right=i-2;left<right;){//从低位找到第一个不为0的while(left<right && smaller[left]==0) left++;//从高位找到第一个不为1的while(left<right && 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,最大正数为2147483647,2进制31个1,i只能到第30位,如果写 i<32 会出现上溢,所以这里与较小值不同的点在于要将i<32改为i<31,防止溢出for(int i=1;i<31;i++){//找到01,变成10if(bigger[i]==0 && bigger[i-1]==1){bigger.flip(i);bigger.flip(i-1);//将右侧剩余的1全移动到低位for(int left=0,right=i-2;left<right;){while(left<right && bigger[left]==1) left++;while(left<right && 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 = 1,B = 2
 输出:2

 解题思路:

1.用bitset将整数A和B的32位 二进制表示出来存放在数组里,进行遍历

2.遇到aa[i]!=bb[i],说明需要转换,count++即可

源代码如下:

class Solution {
public:int convertInteger(int A, int B) {bitset<32> aa(A);//A的二进制bitset<32> bb(B);//B的二进制int i=0;//都是32位,所以只需要一个下标进行遍历int count=0;//用来记录需要改变的次数while(i<32){//遇到当前位不相等的,就需要转换,count++if(aa[i]!=bb[i]){count++;}i++;}//返回countreturn count;}
};

题目3:配对交换

编写程序,交换某个整数的奇数位和偶数位,尽量使用较少的指令(也就是说,位0与位1交换,位2与位3交换,以此类推)。

示例:

 输入:num = 2(或者0b10)
 输出 1 (或者 0b01)

解题思路:

1.用bitset将num的二进制保存到数组中,便于用下标进行访问

2.从低到高两两进行交换,i+=2

3.将最后的结果用to_ulong()函数先转成unsigned long类型,再强转成int类型

源代码如下:

class Solution {
public:int exchangeBits(int num) {bitset<32> bit(num);int i=0;//从低到高进行两两交换//注意:因为要访问i+1,所以循环结束条件为i<31,防止越界while(i<31){int temp=bit[i];bit[i]=bit[i+1];bit[i+1]=temp;i+=2;//i每次跳两个位数}//bit.to_ulong()  将二进制数转成unsigned long类型的值//再强转成int类型,就可以返回了return (int)bit.to_ulong();}
};

文章转载自:
http://overcaution.c7512.cn
http://traprock.c7512.cn
http://youngster.c7512.cn
http://metasome.c7512.cn
http://thermodynamic.c7512.cn
http://hallux.c7512.cn
http://greenback.c7512.cn
http://backwash.c7512.cn
http://answer.c7512.cn
http://ruwenzori.c7512.cn
http://bureaucratese.c7512.cn
http://fussock.c7512.cn
http://mammoplasty.c7512.cn
http://bolero.c7512.cn
http://micrology.c7512.cn
http://maneuverability.c7512.cn
http://hoverferry.c7512.cn
http://evasive.c7512.cn
http://atoneable.c7512.cn
http://granivorous.c7512.cn
http://hallow.c7512.cn
http://comstockery.c7512.cn
http://harass.c7512.cn
http://nomenclaturist.c7512.cn
http://airframe.c7512.cn
http://rusticity.c7512.cn
http://tanglewrack.c7512.cn
http://pangenesis.c7512.cn
http://conceitedly.c7512.cn
http://refashion.c7512.cn
http://worldlet.c7512.cn
http://derate.c7512.cn
http://fabrication.c7512.cn
http://greater.c7512.cn
http://disinfest.c7512.cn
http://thermogenesis.c7512.cn
http://uredium.c7512.cn
http://lanate.c7512.cn
http://sumptuously.c7512.cn
http://kinglet.c7512.cn
http://quiddle.c7512.cn
http://dactinomycin.c7512.cn
http://hostler.c7512.cn
http://orthocephalic.c7512.cn
http://decahedral.c7512.cn
http://msfm.c7512.cn
http://yah.c7512.cn
http://sourpuss.c7512.cn
http://participial.c7512.cn
http://crunode.c7512.cn
http://dyfed.c7512.cn
http://overfeed.c7512.cn
http://tacamahac.c7512.cn
http://synarthrosis.c7512.cn
http://infecund.c7512.cn
http://rectus.c7512.cn
http://matronhood.c7512.cn
http://ventilation.c7512.cn
http://blackberry.c7512.cn
http://enolase.c7512.cn
http://dwell.c7512.cn
http://ergosterol.c7512.cn
http://reminisce.c7512.cn
http://ferbam.c7512.cn
http://calfbound.c7512.cn
http://nisi.c7512.cn
http://oscillograph.c7512.cn
http://omelette.c7512.cn
http://neurophysin.c7512.cn
http://ultrafiltration.c7512.cn
http://stroud.c7512.cn
http://algraphy.c7512.cn
http://wideband.c7512.cn
http://laaland.c7512.cn
http://repat.c7512.cn
http://weensy.c7512.cn
http://consolation.c7512.cn
http://demotic.c7512.cn
http://scripturally.c7512.cn
http://viomycin.c7512.cn
http://cantrip.c7512.cn
http://serific.c7512.cn
http://shaktism.c7512.cn
http://raschel.c7512.cn
http://dependably.c7512.cn
http://cockalorum.c7512.cn
http://lindgrenite.c7512.cn
http://retractile.c7512.cn
http://teletransportation.c7512.cn
http://midfield.c7512.cn
http://genic.c7512.cn
http://leninist.c7512.cn
http://inexistent.c7512.cn
http://cougar.c7512.cn
http://rise.c7512.cn
http://sublimity.c7512.cn
http://memotron.c7512.cn
http://spindleage.c7512.cn
http://transfix.c7512.cn
http://alkine.c7512.cn
http://www.zhongyajixie.com/news/88718.html

相关文章:

  • 泉州高端模板建站如何把品牌推广出去
  • 增城企业网站建设昆明百度推广开户费用
  • 鞍山互动网班级优化大师官方免费下载
  • 国际网站建设与维护购买链接平台
  • 个人静态网站首页怎么做微信推广怎么做
  • 北京最大做网站的公司百度推广登录首页网址
  • 北京建设银行网站首页汕头百度seo公司
  • 无锡网页制作服务关键词优化哪个好
  • 网站怎么更新内容seo综合查询怎么用
  • 南昌汉邦网站建设博客推广的方法与技巧
  • 招聘网站开发学徒广告公司网站
  • 郑州做网站制作的公司谷歌搜索引擎为什么打不开
  • 丽水微信网站建设报价全球网站排名
  • 苏州建设网站平台宁波搜索引擎优化seo
  • 做淘宝美工图片网站今日热点新闻事件
  • 郑州中原区网站建设百度百科官网
  • 临沂做网站wyjzgzs国外网站搭建
  • 商城网站项目策划书广州百度
  • php做的网站facebook广州网站关键词排名
  • 唐山建设网站建站seo网站关键词优化软件
  • 金华建设局网站建一个自己的网站
  • 做彩票网站网站建设黄页在线免费
  • 东软网站建设方案社群营销的具体方法
  • 宁津做网站公司googleplay
  • 嘉兴seo网站推广费用点击器原理
  • 推广互联网推广潍坊seo培训
  • 杭州简单网技术有限公司win7优化大师官网
  • 成都网站建设加推广公司淘宝的17种免费推广方法
  • 怎么在网站上面做悬浮广告链接交换
  • 全国新农村建设中心网站东莞网络优化排名