输入两个递增排序的链表,合并这两个链表并使新链表中的结点仍然是按照递增排序的。
样例
输入:1->3->5 , 2->4->5
输出:1->2->3->4->5->5
同时遍历两链表进行 merge
。
/* public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; } }*/ public class Solution { public ListNode Merge(ListNode list1,ListNode list2) { if (list1 == null) return list2; if (list2 == null) return list1; ListNode p = list1; ListNode q = list2; ListNode ph = new ListNode(-1); ListNode cur = ph; while(p!=null && q!=null){ if(p.val<q.val){ ListNode t = p.next; cur.next = p; p.next = null; p = t; } else { ListNode t = q.next; cur.next = q; q.next = null; q = t; } cur = cur.next; } cur.next = p == null ? q : p; return ph.next; } }
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */ class Solution { public ListNode Merge(ListNode list1, ListNode list2) { if(list1==null) return list2; if(list2==null) return list1; ListNode res = null; if(list1.val<list2.val){ res = list1; res.next = Merge(list1.next, list2); }else{ res = list2; res.next = Merge(list1, list2.next); } return res; } }
原文:https://www.cnblogs.com/lisen10/p/11123337.html