微信公众号"算法与编程之美",欢迎关注,及时了解更多此系列文章。

问题描述

给你一个单链表的引用结点 head。链表中每个结点的值不是 0 就是 1。已知此链表是一个整数数字的二进制表示形式。

请你返回该链表所表示数字的十进制值 。

示例 1:

输入:head = [1,0,1]

输出:5

解释:二进制数 (101) 转化为十进制数 (5)

示例 2:

输入:head = [0]

输出:0

示例 3:

输入:head = [1]

输出:1

示例 4:

输入:head = [1,0,0,1,0,0,1,1,1,0,0,0,0,0,0]

输出:18880

示例 5:

输入:head = [0,0]

输出:0

解决方案

通过观察题目我们可以发现,此题最主要的难点是对于链表的操作,如何从链表中拿出想要的值。首先我们要了解链表,链表是由结点组成,形如字典

ListNode{val: 1, next: ListNode{val: 0,  next: ListNode{val: 1, next: None}}}

我们可以一层一层的将值取出并转换为列表,然后就好解决了

将链表转化列表


l = []

while head:

    l.append(head.val)

    head = head.next


用int函数

s = [str(i) for i in head]

 s = ''.join(s)

 print(int(s,2))

完整代码如下


# Definition for singly-linked list.

# class ListNode:

#      def __init__(self, x):

#          self.val = x

#          self.next = None


class Solution:

     def getDecimalValue(self, head: ListNode) -> int:

         l = []

         while head:

            l.append(head.val)

            head = head.next

         s = [str(i) for i in l]

         s = ''.join(s)

         return int(s,2)


结语

拿到问题应多多分析,此题主要是理解链表的原理并加以利用,就可以解决了。

END

实习主编   |   王楠岚

责       编   |   王    曦

 where2go 团队



微信号:算法与编程之美          

Python|二进制链表转整数_编程之美

长按识别二维码关注我们!

温馨提示:点击页面发表评论,期待您的参与!期待您的转发!