zoukankan      html  css  js  c++  java
  • [Leetcode] Add Two Numbers @Python

    本题是使得两个链表相加,每个链表中值均为0~9,对于两个链表对应的值相加值sum若大于9,则为sum%10,并在指向的下一对节点的和sum上加1。

    做题思路:

    1. 判断两链表是否有空链表,若有,直接返回另一个链表。
    2. 若均不为空,则对应相加即可。

    语法细节:

    1. 定义节点。使用:类+构造方法,构造方法的参数要有节点的数值大小、对下一个节点的指针等。
    2. 若 l1 表示一个链表,则实质上 l1 表示头节点的指针。
    3. 先实例一个头结点,然后在 while 循环中逐个加入节点
    4. del ret 删除头结点

    代码实现:

    class ListNode:
        def __init__(self, x):
            self.val = x
            self.next = None
    
    class Solution:
        # @return a ListNode
        def addTwoNumbers(self, l1, l2):
            if l1 is None:
                return l2
            elif l2 is None:
                return l1
            else:          
                carry = 0
                ret =ListNode(0)
                ret_Last = ret
                
                while(l1 or l2):
                    sum = 0
                    if(l1):
                        sum = l1.val
                        l1 = l1.next
                    if(l2):
                        sum += l2.val
                        l2 = l2.next
                    sum += carry
                    ret_Last.next = ListNode(sum%10)
                    ret_Last = ret_Last.next
                    carry = (sum >= 10)
                if(carry):
                    ret_Last.next =ListNode(1)
                ret_Last = ret.next
                del ret
                return ret_Last     
  • 相关阅读:
    golang单例模式
    PHP打开并修改文件
    关于文件服设计的一些想法
    Api
    golang Iterate through the fields of a struct in Go
    zookeeper note
    centos 6 install protoc
    todo
    linux route
    build http_load
  • 原文地址:https://www.cnblogs.com/tosouth/p/4268398.html
Copyright © 2011-2022 走看看