将表示二进制数的链表转换成 Python 十进制整数的程序


假设我们有一个单向链表。该链表表示一个二进制数,其中最高有效数字排在最前面,我们必须将其返回为十进制数。

因此,如果输入类似于 [1,0,1,1,0],则输出将为 22

要解决这个问题,我们将遵循以下步骤 -

  • l := 一个新列表
  • 当节点不为空时,做
    • 在 l 的末尾插入节点的值
    • node:= node 的下一个
  • k := 0,v:= 0
  • 针对 l 的长度从 -1 到 0,递减 1,做
    • 如果 l[i] 与 1 相同,则
      • v := v + 2^k
    • k := k + 1
  • 返回 v

让我们查看以下实现以获得更好的理解 -

示例

 在线示例

class ListNode:
   def __init__(self, data, next = None):
      self.val = data
      self.next = next
def make_list(elements):
   head = ListNode(elements[0])
   for element in elements[1:]:
      ptr = head
      while ptr.next:
         ptr = ptr.next
         ptr.next = ListNode(element)
   return head
class Solution:
   def solve(self, node):
      l = []
      while node:
         l.append(node.val)
         node=node.next
         k = 0
         v=0
         for i in range(len(l)-1,-1,-1):
            if (l[i]==1):
            v += (2**k)
k+=1
return v
ob = Solution()
head = make_list([1,0,1,1,0])
print(ob.solve(head))

输入

[1,0,1,1,0]

输出

22

更新于: 06-10-2020

1 千+ 次浏览

助力您的 职业生涯

完成课程获得认证

开始
广告
© . All rights reserved.