LeetCode-p2:两数相加

需要注意的地方

  1. 在自己测试的时候,需要自己完成数据结构ListNode的实现
  2. 两组ListNode的长度可能不一样,所以需要在短的后面补0
  3. 在返回时不一定需要返回保存的结果的根结点,所以初始化可以用0初始化
  4. 最后一位可能还存在进位,因此在跳出循环后再进行处理
# Definition for singly-linked list.

class ListNode(object):
    def __init__(self, val=0, next=None):
        self.val = val
        self.next = next

def create_ListNode(head):
    root = ListNode(head[0])
    p =root
    for i in range(1,len(head)):
        node = ListNode(head[i])
        p.next = node
        p = node
    return root

def print_ListNode(head):
    p = head
    val = []
    while p:
        val.append(p.val)
        p = p.next
    return val

class Solution(object):
    def addTwoNumbers(self, l1, l2):
        """
        :type l1: ListNode
        :type l2: ListNode
        :rtype: ListNode
        """
        p1 = l1
        p2 = l2
        result_root = ListNode()
        temp = 0
        result_p = result_root
        while p1 or p2:
            result_p.next = ListNode((p1.val + p2.val +temp)%10)
            result_p = result_p.next
            temp = (p1.val + p2.val +temp)//10
            if not(p1.next or p2.next):
                break
            if p1.next:
                p1 = p1.next
            else:
                p1 = ListNode(0)
            if p2.next:
                p2 = p2.next
            else:
                p2 = ListNode(0)
        if temp>0:
            result_p.next = ListNode(temp)
        return result_root.next





if __name__=='__main__':
    head_1 = [2,4,3]
    head_2 = [5,6,4]
    l1 = create_ListNode(head_1)
    l2 = create_ListNode(head_2)
    # print(print_ListNode(l1))
    result = Solution().addTwoNumbers(l1, l2)
    print(print_ListNode(result))


 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值