题目:
给你两个 非空 链表来代表两个非负整数。数字最高位位于链表开始位置。它们的每个节点只存储一位数字。将这两数相加会返回一个新的链表。
你可以假设除了数字 0 之外,这两个数字都不会以零开头。
进阶:
如果输入链表不能修改该如何处理?换句话说,你不能对列表中的节点进行翻转。
示例:
输入:(7 -> 2 -> 4 -> 3) + (5 -> 6 -> 4)
输出:7 -> 8 -> 0 -> 7
题目的理解:
链表表示整数的每一位,获取出来组成一个整数。两个整数相加等到A。
将A转成数组,倒序后存在链表。
python实现
from typing import List
# Definition for singly-linked list.
class ListNode:
def __init__(self, x):
self.val = x
self.next = None
class Solution:
def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode:
def nodeToValue(node: ListNode) -> int:
result = 0
while node is not None:
result = result * 10 + node.val
node = node.next
return result
value = list(str(nodeToValue(l1) + nodeToValue(l2)))
value.reverse()
current = ListNode(value[0])
value.pop(0)
for num in value:
node = ListNode(num)
node.next = current
current = node
return current
想看最优解法移步此处
提交
哈哈每天被困难难度折磨的不像人样了,最后问题都转化成了数学问题,数学知识又忘记的差不多了,尴尬啊
// END 每天进步一点点
网友评论