package com.test.leecode.link;
/**
* Created by zhanghaipeng on 2019/8/5.
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*
* 将兩個有序連結清單合并為一個新的有序連結清單并傳回。新連結清單是通過拼接給定的兩個連結清單的所有節點組成的。
* 示例:
* 輸入:1->2->4, 1->3->4
* 輸出:1->1->2->3->4->4
*
* 來源:力扣(LeetCode)
* 連結:https://leetcode-cn.com/problems/merge-two-sorted-lists
* 著作權歸領扣網絡所有。商業轉載請聯系官方授權,非商業轉載請注明出處。
*/
class ListNode {
int val;
ListNode next;
ListNode(int x) {
val = x;
}
}
/**
* @author zhanghaipeng
*/
public class CombineTwoLink {
public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
ListNode combine = new ListNode (-1);
ListNode cur = combine;
ListNode cur1 = l1;
ListNode cur2 = l2;
ListNode temp = null;
while(cur1 != null || cur2 != null ) {
if(cur1 == null){
cur.next = cur2;
break;
}
if(cur2 == null){
cur.next = cur1;
break;
}
if (cur1.val <= cur2.val) {
temp = cur1.next;
cur.next = cur1;
cur1.next = null;
cur1 = temp;
cur = cur.next;
} else {
temp = cur2.next;
cur.next = cur2;
cur2.next = null;
cur2 = temp;
cur = cur.next;
}
}
return combine.next;
}
public static void main(String[] args){
ListNode l1 = new ListNode (1);
l1.next = new ListNode (2);
l1.next.next = new ListNode(4);
l1.next.next.next = new ListNode(5);
ListNode l2 = new ListNode (1);
l2.next = new ListNode (3);
l2.next.next = new ListNode(4);
new CombineTwoLink ().mergeTwoLists (l1,l2);
}
}