Merge two sorted (ascending) linked lists and return it as a new sorted list. The new sorted list should be made by splicing together the nodes of the two lists and sorted in ascending order. Example Given 1->3->8->11->15->null, 2->null , return 1->2->3->8->11->15->null.
Merge two sorted (ascending) linked lists and return it as a new sorted list. The new sorted list should be made by splicing together the nodes of the two lists and sorted in ascending order.
Example
Given 1->3->8->11->15->null, 2->null , return 1->2->3->8->11->15->null.
1->3->8->11->15->null
2->null
1->2->3->8->11->15->null
将两个排序链表合并为一个新的排序链表
只需要从头开始比较已排序的两个链表,新链表指针每次指向值小的节点,依次比较下去,最后,当其中一个链表到达了末尾,我们只需要把新链表指针指向另一个没有到末尾的链表此时的指针即可。
/** * Definition for ListNode. * public class ListNode { * int val; * ListNode next; * ListNode(int val) { * this.val = val; * this.next = null; * } * } */ public class Solution { /** * @param ListNode l1 is the head of the linked list * @param ListNode l2 is the head of the linked list * @return: ListNode head of linked list */ public ListNode mergeTwoLists(ListNode l1, ListNode l2) { ListNode dummy = new ListNode(0); ListNode curr = dummy; while ((l1 != null) && (l2 != null)) { if (l1.val > l2.val) { curr.next = l2; l2 = l2.next; } else { curr.next = l1; l1 = l1.next; } curr = curr.next; } // link to non-null list curr.next = (l1 != null) ? l1 : l2; return dummy.next; } }
Copyright© 2013-2020
All Rights Reserved 京ICP备2023019179号-8