前言
这次之所以没有指定某一个题,是因为今天想同时写两道题,分别是链表和数组的合并。即:
- 两个有序链表合并成一个有序链表
- 两个有序数组合并成一个有序数组
数据合并
题1
将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例:
输入:1->2->3, 2->3->4
输出:1->2->2->3->3->4
分析
新构造一个链表,遍历原来的两个老链表,分别取其小节点依次排列在新的链表上。
代码实现
/**
* 哨兵法合并
* @param l1
* @param l2
* @return
*/
public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
ListNode preHead = new ListNode(-1);
ListNode pre = preHead;
while (l1 != null && l2 != null){
if (l1.val < l2.val