第4周学习笔记
2020-04-08 本文已影响0人
jim_8432
题目:
思路:
第一次解法(行不通,会超时):把二进制数通过Math.pow转化为十进制数。之后偶数除二,奇数加一,发现该解法超时并且数据大的时候会溢出,行不通。
第二种方法,找规律,可以发现,有两种情况。(这个解法很有趣)
第一种就是数字为奇数时(即结尾为1),数字进行+1操作后将变成偶数(即结尾为0),而后偶数只需进行移位,即可得到最终的结果。
比如说数字111,进行+1操作后,变成1000,移动3位,即可得到1(共4步,+1,移位,移位,移位)
又比如说数字1011,进行+1操作后,变成1100,移动两位后,变成11,再+1,此时数字为100.再移两位。(此处共6步)