# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
def listNode2int(list_node):
val = 0
node = list_node
power = 0
while True:
val += node.val * (10**power)
power += 1
node = node.next
if node is None:
break
return val
def int2listNode(n):
head = None
last_node = None
while True:
x = n % 10
new_node = ListNode(x)
if last_node:
last_node.next = new_node
last_node = new_node
if head is None:
head = new_node
n = n // 10
if n == 0:
break
return head
class Solution:
def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode:
n1 = listNode2int(l1)
n2 = listNode2int(l2)
return int2listNode(n1+n2)
竟然一次就通过了
解法二:
class Solution:
def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode:
head = ListNode(0)
node = head
overflow = 0
while True:
val = overflow
if l1 is not None:
val += l1.val
l1 = l1.next
if l2 is not None:
val += l2.val
l2 = l2.next
if val >= 10:
val -= 10
overflow = 1
else:
overflow = 0
node.val = val
if l1 is None and l2 is None and overflow == 0:
break
node.next = ListNode(0)
node = node.next
return head
https://leetcode-cn.com/problems/add-two-numbers
解法一
竟然一次就通过了
解法二:
同一份代码,连续跑两次,速度差很多,可能是由于缓存原因。
排名也差很多,说明大家的时间都在这个范围内。