前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python|二进制链表转整数

Python|二进制链表转整数

作者头像
算法与编程之美
发布2020-02-13 17:42:56
7860
发布2020-02-13 17:42:56
举报

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

问题描述

给你一个单链表的引用结点 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

解决方案

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

代码语言:javascript
复制
ListNode{val: 1, next: ListNode{val: 0,  next: ListNode{val: 1, next: None}}}

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

将链表转化列表

代码语言:javascript
复制
l = []

while head:

    l.append(head.val)

    head = head.next

用int函数

代码语言:javascript
复制
s = [str(i) for i in head]
 s = ''.join(s)
 print(int(s,2))

完整代码如下

代码语言:javascript
复制
# 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)

结语

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-01-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 算法与编程之美 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档