专栏首页算法与编程之美Python|二进制链表转整数

Python|二进制链表转整数

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

问题描述

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

结语

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

本文分享自微信公众号 - 算法与编程之美(algo_coding)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-01-09

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 微信小程序|vant-dist的引用与屏幕宽度的获取

    微信小程序中需要用到许多代码,且毫无规律而言,对于刚接触微信小程序开发的开发者来说,想要完全记住并流畅的使用必定是难上加难的,那么有没有什么方法能够有效地解决这...

    算法与编程之美
  • 深入理解遗传算法(三)

    已知N元一次方程y = w1x1 + w2x2 + w3x3 + w4x4 + w5x5 + w6x6

    算法与编程之美
  • Python|DFS在矩阵中的应用-剪格子

    DFS算法常被用于寻找路径和全排列,而基于不同的数据储存方式,如列表、字典、矩阵等,代码实现难度也会在差异。今天向大家分享DFS在矩阵中的代码实现,文字较多,预...

    算法与编程之美
  • 剑指offer 反转链表

    week
  • 数据结构与算法(三)链表

    •插入操作的时候 如果想在角标1添加,要找到角标1的上一个元素。•边界问题 例如首个元素添加 以及最后一个元素添加

    老沙
  • LeetCode Remove Linked List Elements

    Remove all elements from a linked list of integers that have value val. Example...

    desperate633
  • leetcode 83 Remove Duplicates from Sorted List

    Given a sorted linked list, delete all duplicates such that each element appear ...

    用户1539362
  • 有环链表

    一份执着✘
  • LeetCode 19. Remove Nth Node From End of List题目分析代码

    样例 给出链表1->2->3->4->5->null和 n = 2. 删除倒数第二个节点之后,这个链表将变成1->2->3->5->null.

    desperate633
  • LintCode 回文链表题目分析代码

    链表由于其特殊的结构,没法像数组那样判断回文,所以比较原始的方法,先找到链表的中间节点,然后将后半部分反转,然后逐个比较即可。 链表中的算法,通常以寻找链表中...

    desperate633

扫码关注云+社区

领取腾讯云代金券