我是靠谱客的博主 内向宝马,这篇文章主要介绍leetcode链表刷题:二进制链表转整数,现在分享给大家,希望可以做个参考。

这是一道比较简单的题目,但是还是有一点小小的收获的:
在这里插入图片描述
这道题其实只要把全部数字读出来就可以转化成结果。但是转化结果的方法也还是有点技巧的。
我最开始使用的方法是把二进制数字数出来,转化成字符串然后再转成十进制。在这个方法里,我了解到了int这个函数可以把任意进制的数字转化成十进制的。这里有使用方法
代码如下所示:

class Solution:
    def getDecimalValue(self, head: ListNode) -> int:
        binary = 0
        while head:
            binary = binary * 10 + head.val
            head = head.next
        return(int(str(binary), 2))

但是这样做的话,还是有点麻烦的,因为多了一部把二进制转化成十进制的过程。有没有办法不转化就直接输出结果呢?答案是肯定的,那就是迭代计算的时候,不要乘以10,直接乘以2,这样输出的那个数字就是十进制下的结果了。为什么?因为二进制中每一个1都对应着十进制里面的2的幂,因此直接乘以2是可以直接获得十进制的结果的。
这种方法的代码如下所示:

class Solution:
    def getDecimalValue(self, head: ListNode) -> int:
        binary = 0
        while head:
            binary = binary * 2 + head.val
            head = head.next
        return binary

最后

以上就是内向宝马最近收集整理的关于leetcode链表刷题:二进制链表转整数的全部内容,更多相关leetcode链表刷题内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(58)

评论列表共有 0 条评论

立即
投稿
返回
顶部