LeetCode 2-Add Two Numbers

xiaoxiao2021-02-28  50

题目:

You are given two non-empty linked lists representing two non-negative integers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return it as a linked list.

You may assume the two numbers do not contain any leading zero, except the number 0 itself.

Example

Input: (2 -> 4 -> 3) + (5 -> 6 -> 4) Output: 7 -> 0 -> 8 Explanation: 342 + 465 = 807. 代码: # Definition for singly-linked list. # class ListNode: # def __init__(self, x): # self.val = x # self.next = None class Solution: def addTwoNumbers(self, l1, l2): """ :type l1: ListNode :type l2: ListNode :rtype: ListNode """ i1=0 sum1=0 h1=l1 h2=l2 while(h1): sum1+=h1.val*(10**i1) i1+=1 h1=h1.next i2=0 sum2=0 while(h2): sum2+=h2.val*(10**i2) i2+=1 h2=h2.next sum1+=sum2 h = ListNode(sum1) node=h sum1=sum1//10 while(sum1): tmp=ListNode(sum1) sum1=sum1//10 node.next = tmp node = node.next return h

分析: 该题将链表看做数字,大数在尾,小数在头,计算两个链表所代表的数字之和再转化成链表。该题有两种解法,一是将每个链表转化成数字,然后计算和,最后在转化成链表。二是直接以链表的形式相加,从头开始,只需要判断是否需要进一,我采用的是第一种方法,虽然复杂度高了一些,但是比较利于理解。sum1和sum2就是两个链表所代表的数字,加在一起后得到的和就是我们最后需要用链表所表示的数字。

转载请注明原文地址: https://www.6miu.com/read-2626085.html

最新回复(0)