这是一道比较简单的题目,但是还是有一点小小的收获的:
这道题其实只要把全部数字读出来就可以转化成结果。但是转化结果的方法也还是有点技巧的。
我最开始使用的方法是把二进制数字数出来,转化成字符串然后再转成十进制。在这个方法里,我了解到了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链表刷题内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复