2. Add Two Numbers(Leetcode)

题目:

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.

Example:

Input: (2 -> 4 -> 3) + (5 -> 6 -> 4)
Output: 7 -> 0 -> 8
Explanation: 342 + 465 = 807.

方法一:数学加减法
1、结果存储:建立一个结果节点和一个结果节点的引用,一个用来存结果,一个方便放回结果。以后返回值是链表都设置两个链表存储
2、时间复杂度:O(max(m,n)) 空间复杂度:O(max(m,n))+1。+1是因为相加后可能有进位
3、循环递归的区别:
  循环:重复执行同一个代码。
    可能不能解决所有问题。
  递归:自己调用自己。就像一个小孩上楼取东西。台阶的结构是一样的,小孩一层一层爬楼梯直到取到东西再跑下来。
    优点:代码更简洁清晰,可读性更好。
    缺点:由于递归需要系统堆栈,所以空间消耗要比非递归代码要大很多。而且,如果递归深度太大,可能系统撑不住。
4、当做条件判断和条件循环的时候,一定要考虑出判断和循环后是否还有什么情况是需要计算的

 


运行时间:31 ms

 


posted on 2019-02-19 10:49  shaer  阅读(114)  评论(0编辑  收藏  举报

导航