leetcode(二)—— Add Two Numbers(Python/C++)
2016-04-11 09:48
543 查看
Add Two Numbers | LeetCode OJ
逻辑是简单的,主要是处理进位,以及两序列长度不一致的情况;
逻辑是简单的,主要是处理进位,以及两序列长度不一致的情况;
Python
# 链表结点定义 class ListNode(object): def __init__(self, x): self.val = x self.next = None # 为链表添加新的元素 def addTail(l, node): if l.next is None: l.next = node else: p = l.next while p.next: p = p.next p.next = node class Solution(object): def addTwoNumbers(self, l1, l2): carrier = 0 x, y = l1.val, l2.val if x+y>=10: carrier = 1 l = ListNode(x+y-10) else: l = ListNode(x+y) while l1.next and l2.next: x, y = l1.next.val, l2.next.val if x+y+carrier>=10: addTail(l, ListNode(x+y+carrier-10)) carrier = 1 else: addTail(l, ListNode(x+y+carrier)) carrier = 0 l1 = l1.next l2 = l2.next # 以下两个 while 循环处理长度不一致的情况 while l1.next: if l1.next.val+carrier >= 10: addTail(l, ListNode(l1.next.val+carrier-10)) carrier = 1 else: addTail(l, ListNode(l1.next.val+carrier)) carrier = 0 l1 = l1.next while l2.next: if l2.next.val+carrier >= 10: addTail(l, ListNode(l2.next.val+carrier-10)) carrier = 1 else: addTail(l, ListNode(l2.next.val+carrier)) carrier = 0 l2 = l2.next # 还有进位 if carrier == 1: addTail(l, ListNode(1)) return l
相关文章推荐
- C++基本语法-----struct
- C++进阶
- BMP文件结构读写操作
- [C++]C++对象的生存周期
- C++中的左值和右值
- Effective C++ Item 37 绝不又一次定义继承而来的缺省參数值
- 合并排序的分析
- C/C++程序编译流程
- C++构造函数
- C/C++程序编译流程(预处理->编译->汇编->链接)细讲
- Google C++命名规范
- C语言文件遍历
- C语言时间转换
- C语言函数返回类型为指针时的一些问题
- 利用C语言创建和使用DLL文件
- [温故而知新] 《深度探索c++对象模型》——构造、析构、拷贝的语义
- c++继承详解之一——继承的三种方式、派生类的对象模型
- C++中解析XML tinyXML2
- 大型分布式C++框架《二:大包处理过程》
- c语言基础<5>