标签:
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
.
SOLUTION:
链表在merge的时候其实要有优势的,它不需要额外空间,不想array,要重新开一个空间放array。操作的时候也很简单,弄一个dummy,然后把小的直接连上就行了。此题属于基本操作,在其他题里完全可以作为function调用。
代码:
/** * 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) { if (l1 == null){ return l2; } if (l2 == null){ return l1; } ListNode dummy = new ListNode(0); ListNode node = dummy; while (l1 != null && l2 != null){ if (l1.val < l2.val){ node.next = new ListNode(l1.val); l1 = l1.next; node = node.next; } else { node.next = new ListNode(l2.val); l2 = l2.next; node = node.next; } } while (l1 != null){ node.next = new ListNode(l1.val); l1 = l1.next; node = node.next; } while (l2 != null){ node.next = new ListNode(l2.val); l2 = l2.next; node = node.next; } return dummy.next; } }
[LintCode] Merge Two Sorted Lists
标签:
原文地址:http://www.cnblogs.com/tritritri/p/4970915.html