1,问题描述
21. 合并两个有序链表
难度:简单
将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例 1:

1 2
| 输入:l1 = [1,2,4], l2 = [1,3,4] 输出:[1,1,2,3,4,4]
|
示例 2:
1 2
| 输入:l1 = [], l2 = [] 输出:[]
|
示例 3:
1 2
| 输入:l1 = [], l2 = [0] 输出:[0]
|
提示:
- 两个链表的节点数目范围是
[0, 50]
-100 <= Node.val <= 100
l1
和 l2
均按 非递减顺序 排列
2,初步思考
感觉没什么难度,直接比较组合就行了
3,代码处理
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| import support.ListNode;
public class _21合并两个有序链表 {
public ListNode mergeTwoLists(ListNode list1, ListNode list2) { ListNode head = new ListNode(); ListNode tail = head; while (list1 != null && list2 != null) { if (list1.val <= list2.val) { ListNode temp = list1; list1 = list1.next; temp.next = null; tail.next = temp; } else { ListNode temp = list2; list2 = list2.next; temp.next = null; tail.next = temp; } tail = tail.next; } if (list1 != null) tail.next = list1; if (list2 != null) tail.next = list2; return head.next; }
public static void main(String[] args) { _21合并两个有序链表 mergeTwoLists = new _21合并两个有序链表(); ListNode list1 = new ListNode(1, new ListNode(2, new ListNode(4))); ListNode list2 = new ListNode(1, new ListNode(3, new ListNode(4))); ListNode merge = mergeTwoLists.mergeTwoLists(list1, list2); while (merge != null) { System.out.println(merge.val); merge = merge.next; } } }
|