网络异常,图片无法展示
|
题目
给你一个单链表的引用结点 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
提示:
链表不为空。 链表的结点总数不超过 30。 每个结点的值不是 0 就是 1。
解题思路
class ListNode: def __init__(self, val=0, next=None): self.val = val self.next = next # Definition for singly-linked list. # class ListNode: # def __init__(self, val=0, next=None): # self.val = val # self.next = next class Solution: def getDecimalValue(self, head: ListNode) -> int: resStr = "" while head != None: resStr += str(head.val) head = head.next #二进制转十进制 int(二进制值,2) # print(resStr) return int(resStr, 2) if __name__ == '__main__': # #链表样例,注意复制! # #L1 1->2->3->4->5 # l1 = ListNode(1,ListNode(2, ListNode(3, ListNode(4, ListNode(5))))) # #L2 1->3->4 # l2 = ListNode(1, ListNode(3, ListNode(4))) # list1 = [1, 2, 3, 3, 2, 1] # list1 = [1, 0, 1] list1 = [1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0] nodeL1 = ListNode() headL1 = nodeL1 while len(list1) >0: node = ListNode(list1.pop(0)) nodeL1.next = node nodeL1 = node headL1 = headL1.next tempHeadL1 = headL1 while(tempHeadL1.next != None): # print(tempHeadL1.val) tempHeadL1 = tempHeadL1.next ret = Solution().getDecimalValue(headL1) print(ret)