Merge two sorted linked lists and return it as a new list. The new list should be made by splicing together the nodes of the first two lists.
水题不解释,一A,代码如下:
1 /** 2 * Definition for singly-linked list. 3 * struct ListNode { 4 * int val; 5 * ListNode *next; 6 * ListNode(int x) : val(x), next(NULL) {} 7 * }; 8 */ 9 class Solution { 10 public: 11 ListNode *mergeTwoLists(ListNode *l1, ListNode *l2) { 12 ListNode* head; 13 if(l1 == NULL) 14 return l2; 15 if(l2 == NULL) 16 return l1; 17 18 if(l1->val < l2->val) 19 { 20 head = l1; 21 l1 = l1->next; 22 } 23 else 24 { 25 head = l2; 26 l2 = l2->next; 27 } 28 ListNode* current = head; 29 while(l1 != NULL && l2 != NULL){ 30 if(l1->val < l2->val){ 31 current->next = l1; 32 l1 = l1->next; 33 current = current->next; 34 } 35 else 36 { 37 current->next = l2; 38 l2 = l2->next; 39 current = current->next; 40 } 41 } 42 if(l1 != NULL) 43 current->next = l1; 44 if(l2 != NULL) 45 current->next = l2; 46 return head; 47 } 48 };
Java版本代码:
1 /** 2 * Definition for singly-linked list. 3 * public class ListNode { 4 * int val; 5 * ListNode next; 6 * ListNode(int x) { 7 * val = x; 8 * next = null; 9 * } 10 * } 11 */ 12 public class Solution { 13 public ListNode mergeTwoLists(ListNode l1, ListNode l2) { 14 if(l1 == null) 15 return l2; 16 if(l2 == null) 17 return l1; 18 19 ListNode head = null; 20 if(l1.val < l2.val) 21 { 22 head = l1; 23 l1 = l1.next; 24 }else{ 25 head = l2; 26 l2 = l2.next; 27 } 28 29 ListNode current = head; 30 while(l1 != null && l2 != null){ 31 if(l1.val < l2.val){ 32 current.next = l1; 33 l1 = l1.next; 34 }else{ 35 current.next = l2; 36 l2 = l2.next; 37 } 38 current = current.next; 39 } 40 41 if(l1 != null) 42 current.next = l1; 43 if(l2 != null) 44 current.next = l2; 45 46 return head; 47 } 48 }