美文网首页
第4周学习笔记

第4周学习笔记

作者: jim_8432 | 来源:发表于2020-04-08 23:19 被阅读0次

    1404. 将二进制表示减到 1 的步骤数

    题目:

    思路:

    第一次解法(行不通,会超时):把二进制数通过Math.pow转化为十进制数。之后偶数除二,奇数加一,发现该解法超时并且数据大的时候会溢出,行不通。

    第二种方法,找规律,可以发现,有两种情况。(这个解法很有趣)

    第一种就是数字为奇数时(即结尾为1),数字进行+1操作后将变成偶数(即结尾为0),而后偶数只需进行移位,即可得到最终的结果。

    比如说数字111,进行+1操作后,变成1000,移动3位,即可得到1(共4步,+1,移位,移位,移位)

    又比如说数字1011,进行+1操作后,变成1100,移动两位后,变成11,再+1,此时数字为100.再移两位。(此处共6步)

    代码:

    总结:这道题一看看起来很简单,其实很让人容易写完之后发现之前的思路都是错误的,因为他会出现溢出的现象,所以,数学规律成为了主要的答题方式,并且这一技巧容易转换成代码来进行输出。做题的时候最好理清思维,不要去死磕。

    相关文章

      网友评论

          本文标题:第4周学习笔记

          本文链接:https://www.haomeiwen.com/subject/yjwuphtx.html