Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

โปรแกรมแปลงรายการที่เชื่อมโยงแทนเลขฐานสองเป็นจำนวนเต็มทศนิยมในPython


สมมติว่าเรามีรายการที่เชื่อมโยงกัน รายการที่เชื่อมโยงเป็นเลขฐานสองที่มีตัวเลขที่สำคัญที่สุดก่อน เราต้องคืนค่าเป็นเลขฐานสิบ

ดังนั้นหากอินพุตเท่ากับ [1,0,1,1,0] เอาต์พุตจะเป็น 22

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • l :=รายการใหม่
  • ในขณะที่โหนดไม่เป็นโมฆะให้ทำ
    • ใส่ค่าของโหนดที่ส่วนท้ายของ l
    • โหนด:=ถัดไปของโหนด
  • k :=0, v:=0
  • สำหรับฉันในช่วงขนาด l - 1 ถึง 0, ลดลง 1 ทำ
    • ถ้า l[i] เหมือนกับ 1 แล้ว
      • v :=v + 2^k
    • k :=k + 1
  • รีเทิร์นวี

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

ตัวอย่าง

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