单链表之合并两个有序单链表
题目说的是:合并两个有序的单链表,两个链表既然都有序,那其实我们要做的工作就不是很多了,如果两个链表是无序的,那我们还需要各自对两个链表进行排序再进行合并的操作。
思路一:遍历实现
这种实现方式思路比较清晰,代码也比较容易理解,但是较为冗长,我自己没有进行实现,大家可以点击链接去作者的博客了解一下。
思路二:递归实现
不得不说递归的实现方法真的太巧妙了, 几行代码解决问题。递归比较考验我们的抽象问题的能力。
关于递归,有以下几个要点:1. 问题可以分解为多个相同的小问题。2. 每个小问题的处理方式一样的。
比如我们在电影院,想自己在第几排,那我们可以问前一排的人他在第几排,我们+1就可以了,但是他也不知道在第几排,所以他又去问他前面的人,这样一个接一个问到第一排的人,再一个个返回来。就知道自己第几排了。这就是递归的思路。
合并两个单链表,无非就是不断比较他们当前的节点,将大的(或小的)一个,链接到新的链表上。这里很好的运用了递归把大问题化解成N个小的问题。
1 | /** |
算法专栏的王争老师在递归这节课中有一句话说的很好:不要试图去详细分析递归的运行过程。 研究过递归代码的同学应该都深有体会,稍稍复杂一点,就很容易看晕,放心,这不是因为我们脑容量不够或者比较笨!