题目25:合并两个排序的链表
输入两个递增排序的链表,合并这两个链表并使新链表中的结点仍然是按照递增排序的。
举例说明
链表1:10 -> 30 -> 50 -> 70
;链表2:20 -> 40 -> 60 -> 80
合并后的链表为:10 -> 20 -> 30 -> 40 -> 50 -> 60 -> 70 -> 80
思路
几个点
- 选择好 合并后链表的头
- 每次相当于从一个老链表断开(用.next后移),接在新链表上(为.next赋值)
一. 递归
每次以两个链表头节点中的小值作为合并链表的下一个节点。每次合并的操作都是相同的,故使用递归。
主体代码
1 | public static ListNode merge1(ListNode head1, ListNode head2) {//递归 |
二. 迭代
主体代码
1 | public static ListNode merge2(ListNode head1, ListNode head2) {//迭代 |
总的代码含测试
1 | public class _25 { |
输出:
1 | 原始链表1:10->30->50->70->null |