1. 问题描述
- 描述:二进制位链表转十进制
- 输入:二进制位链表
- 输出:十进制结果
2. 解题思路
-
关键点:求指数
-
解题步骤:
- a. 求指数
- b. 转十进制
-
javascript:
/**
* @param {ListNode} head
* @return {number}
*/
var getDecimalValue = function (head) {
let length = 0;
let p = head;
while (p) {
length++;
p = p.next;
}
p = head;
let v = 0;
while (p) {
v += p.val * Math.pow(2, --length);
p = p.next;
}
return v;
};
- Python
# 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:
length = 0
p = head
while p:
length = length+1
p = p.next
p = head
v = 0
while p :
length = length - 1
v += p.val * math.pow(2, length)
p = p.next
return int(v)