leetcode 2. Add Two Numbers python
来源:互联网 发布:六级分数算法 编辑:程序博客网 时间:2024/05/22 14:59
题目
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.
Input: (2 -> 4 -> 3) + (5 -> 6 -> 4)
Output: 7 -> 0 -> 8
有两个链表作为输入,它们表示逆序的两个非负数。两个链表表示的是342和465。
计算它们的和并且用同样的方式逆序输出。如342+465 = 807。结果应表达为7 ->0 ->8
解答
# Definition for singly-linked list.import mathclass ListNode(object): def __init__(self, x): self.val = x self.next = Noneclass Solution(object): def addTwoNumbers(self, l1, l2): """ :type l1: ListNode :type l2: ListNode :rtype: ListNode """ carry = 0 root = n = ListNode(0) while l1 or l2 or carry: v1 = v2 = 0 if l1: v1 = l1.val l1 = l1.next if l2: v2 = l2.val l2 = l2.next carry, val = divmod(v1 + v2 + carry, 10) n.next = ListNode(val) n = n.next return root.next""" 测试单链表l1"""l1 = ListNode(2)l1.next=ListNode(4)l1.next.next=ListNode(3)# while l1 is not None:# #print(l1.val)# l1=l1.next""" 测试单链表l2"""l2 = ListNode(5)l2.next=ListNode(6)l2.next.next=ListNode(4)# while l2 is not None:# #print(l2.val)# l2=l2.nexta=Solution()r=a.addTwoNumbers(l1,l2)print(r.val)print(r.next.val)print(r.next.next.val)
输出结果
708
解释
感觉这位大神太牛逼了,代码写的简洁优雅。
在python中,预定义为常量False的布尔表达式、特殊对象None、空序列或集合(比如,空字符串、列表或元组)、值为0的数值型数据项等的
布尔结果为False,其他的则为True。
while l1 or l2 or carry 当l1 l2 不为空就继续循环
carry, val = divmod(v1 + v2 + carry, 10) 来判断是否有进位,如果有carry 就会将其带入下次循环,也就是实现了进位。
阅读全文
0 0
- 2.Add Two Numbers Leetcode Python
- [Leetcode]2.Add Two Numbers @python
- LeetCode 2. Add Two Numbers python 解法
- [leetcode:python] 2.Add Two Numbers
- leetcode 2. Add Two Numbers python
- [leetcode]-add two numbers @python
- 【Leetcode】【python】Add Two Numbers
- [LeetCode]2.Add Two Numbers
- LeetCode 2.Add Two Numbers
- LeetCode --- 2. Add Two Numbers
- [Leetcode] 2. Add Two Numbers
- 【leetcode】2. Add Two Numbers
- leetcode 2. Add Two Numbers
- LeetCode-2.Add Two Numbers
- [leetcode] 2. Add Two Numbers
- 【LeetCode】2. Add Two Numbers
- LeetCode - 2. Add Two Numbers
- LeetCode 2.Add Two Numbers
- 常用压力测试工具介绍
- ajax实现jsonp调用
- java初学者的浅谈2
- Shell脚本入门
- C++函数重载实现的原理以及为什么在C++中调用C语言编译的函数时要加上extern "C"声明
- leetcode 2. Add Two Numbers python
- 获取元素的绝对坐标
- 前端js再新窗口打开页面,以post传递参数方式
- 快速排序
- BLAST中的E值(E-value)
- eclipse在git提交时忽略不必要的文件
- 双目匹配与视差计算
- Mummer文档翻译
- linux中的信号3——alarm、pause函数