zoukankan      html  css  js  c++  java
  • 测试面试LeetCode系列:二进制链表转整数

    题目

    给你一个单链表的引用结点 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。
     
    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/convert-binary-number-in-a-linked-list-to-integer
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    思路

    head是单链表头指针,通过循环头指针可以将数组元素最后拼接成一个二进制数。然后将该二进制数转换成十进制数。 

    # Definition for singly-linked list.
    # class ListNode(object):
    #     def __init__(self, x):
    #         self.val = x
    #         self.next = None
     
    class Solution(object):
        def getDecimalValue(self, head):
            """
            :type head: ListNode
            :rtype: int
            """
            numlist = []
            oct = 0
            while head.next != None:
                numlist.append(head.val)
                head = head.next
            numlist.append(head.val)
            for i in range(len(numlist)-1,-1,-1):
                #print pow(2,i)
                oct += pow(2,i) * numlist[len(numlist)-i-1]
            return oct

    各位大神,有其他思路欢迎留言~

    博主:测试生财

    座右铭:专注测试与自动化,致力提高研发效能;通过测试精进完成原始积累,通过读书理财奔向财务自由。

    csdn:https://blog.csdn.net/ccgshigao

    博客园:https://www.cnblogs.com/qa-freeroad/

    51cto:https://blog.51cto.com/14900374

     

  • 相关阅读:
    MySQL(一)序
    Mockito 小结
    如何入门一个开源软件
    面经
    琐碎的想法(四)键盘布局、快捷键的由来
    琐碎的想法(二)网络协议——人们给计算机的一组“约定”
    Java源码赏析(六)Class<T> 类
    Java随谈(五)Java常见的语法糖
    Java随谈(四)JDK对并发的支持
    Event Loop和宏任务微任务
  • 原文地址:https://www.cnblogs.com/qa-freeroad/p/14147830.html
Copyright © 2011-2022 走看看