腾讯笔试编程题第三道

腾讯笔试编程题第三道题 a,b两个数同时加1或者同时乘以2,求最小等于A,B的次数,用的递归方法,用了三个判断分别是1):  if  (a+1)*2==A、(b+1)*2==B。2)else if    a*2<=A、B*2<=B。3) else    递归函数名(a/2+1   b/2+1)、方法是递归,试了几个简单的用例还可以如果复杂的话不知道行不行,有和我一样做法的么
全部评论
逆向奇偶分析,偶数除2,奇数减1。
点赞 回复 分享
发布于 2017-09-13 17:21
我这是第一道555
点赞 回复 分享
发布于 2017-09-13 17:17
看大家都在吐槽腾讯的编程环境我就放心了,那也叫智能提示?
点赞 回复 分享
发布于 2017-09-13 17:14
我也用的递归方法
点赞 回复 分享
发布于 2017-09-13 17:18
听大神说的BFS
点赞 回复 分享
发布于 2017-09-13 17:19
先判断判断两组数的大小吧,A<a这种是不行的,要求a必须变成A吗,如果是的话ab得大小关系一定和AB的大小关系一样,如果不是的话得先判断大小关系,小的变小的,大的变大的
点赞 回复 分享
发布于 2017-09-13 17:20
乘2操作,和加1操作最后,就是a 乘以 2^ n + f(2)的多项式 例子: ((a + 1) * 2 + 1) * 2 = > a.2 ^ 2 + 2^2 + 2... A - B = a*2 ^n - b*2^n => n = log2( (A - B) / (a -b)),球的乘2的个数 然后再贪心求1的个数
点赞 回复 分享
发布于 2017-09-13 17:26
我的思路是将 a A转化成二进制然后再进行比较 例子一: 100: 1100100 202: 11001010   // 2位不同即需要2次 (1+1 =2) 406: 110010110 // 3位不同即需要3次 (1+2 =3) 因为1100100<1100101,所以直接比较, 例子二: 7 18 18:111 20:10010 因为111>100,所以比较111 和 1001的差,记录数,然后再比较不同的位数。 所以 2 +1,需要三步 即先比较 a和A a.length长度的二进制
点赞 回复 分享
发布于 2017-09-13 17:43
反过来就行了吧
点赞 回复 分享
发布于 2017-09-13 17:46

相关推荐

霁华Tel:秋招结束了,好累。我自编了一篇对话,语言别人看不懂,我觉得有某种力量在控制我的身体,我明明觉得有些东西就在眼前,但身边的人却说啥也没有,有神秘人通过电视,手机等在暗暗的给我发信号,我有时候会突然觉得身体的某一部分不属于我了。面对不同的人或场合,我表现出不一样的自己,以至于都不知道自己到底是什么样子的人。我觉得我已经做的很好,不需要其他人的建议和批评,我有些时候难以控制的兴奋,但是呼吸都让人开心。
点赞 评论 收藏
分享
牛客771574427号:恭喜你,华杰
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务