两数相加——leetcode002

    xiaoxiao2022-06-30  169

    leetcode002——两数相加(链表,python)

    # -*- coding: utf-8 -*- """ Created on Wed May 22 09:25:47 2019 @author: Lenovo """ # Definition for singly-linked list. class ListNode(object): #定义链表类 def __init__(self, x): #初始化时,需要提供第一个节点的值x self.val = x self.next = None #下一节点为None class Solution(object): #定义解决方案类(leetcode中的常用给定格式) def addTwoNumbers(self, l1, l2): #定义Solution中的方法(注:在类中定义方法,第一个参数通常为self,否则无法调用同类方法) """ :type l1: ListNode :type l2: ListNode :rtype: ListNode """ re = ListNode(0) #创建链表头结点指针re,节点值=0 r=re #创建位置指针,用于给链表re赋值 carry=0 #进位位 while(l1 or l2): #当l1或l2不为空 x= l1.val if l1 else 0 #取链表中节点的值(为空则=0) y= l2.val if l2 else 0 s=carry+x+y #求和 carry=s//10 #对10做整除,得到进位位的值 r.next=ListNode(s%10) #取余,赋值 r=r.next #(若指针非空)取链表下一个结点 if(l1!=None):l1=l1.next if(l2!=None):l2=l2.next if(carry>0): #若最高位求和后,进位位=1 r.next=ListNode(1) #下一节点赋值,=1 return re.next #返回re.next if __name__=='__main__': S=Solution(); #先创建Solution类对象S l1=ListNode(2);l1.next=ListNode(4);l1.next.next=ListNode(3); #创建链表l1(此处可以创建一个list,然后使用for循环赋值) l2=ListNode(5);l2.next=ListNode(6);l2.next.next=ListNode(4); r=S.addTwoNumbers(l1,l2) #调用方法 print(r.val,r.next.val,r.next.next.val) #输出(此处也可以使用for)

    最新回复(0)