LeetCode题目,21. Merge Two Sorted Lists
先看题目描述
大意就是给定两个有序的链表,让我们将其合并为一个有序链表并返回
算法和思路
迭代
我们可以用迭代的方法来实现上述算法。当 l1 和 l2 都不是空链表时,判断 l1 和 l2 哪一个链表的头节点的值更小,将较小值的节点添加到结果里,当一个节点被添加到结果里之后,将对应链表中的节点向后移一位。为了方便的返回合并后的链表,我们可以定义一个哨兵节点
算法流程:
- 定义哨兵节点 prehead,初始化前序节点 pre = prehead
- 当 l1 和 l2 均不为空时:
- 比较 l1 和 l2 的节点值的大小,若 l1.val 小于等于 l2.val:
- 则 pre.next = l1,l1 = l1.next,pre = pre.next
- 否则:
- pre.next = l2,l2 = l2.next,pre = pre.next
- 比较 l1 和 l2 的节点值的大小,若 l1.val 小于等于 l2.val:
- 若 l1 为空:
- 则 pre.next = l2
- 否则:
- pre.next = l1
- 最终返回 prehead.next
算法源码
1 | /** |