題目: 給出兩個排序的單鏈表,合並兩個單鏈表,返回合並后的結果;
解題思路:
解法還是很簡單的,但是需要注意以下幾點:
1. 如果兩個鏈表都空,則返回null;
2. 如果鏈表1空,則返回鏈表2的頭節點;反之,如果鏈表2為空,則返回鏈表1的頭節點;
3. 兩個鏈表都不空的情況下:
比較兩個鏈表的頭節點的值,哪個小,則新鏈表的頭節點為哪個;
舉例:l1: 1->3->5; l2:2->4->6->7;則:head = l1的頭節點,此時head.next = l1.next 或者 l2
代碼如下:
1 /** 2 * Definition for singly-linked list. 3 * public class ListNode { 4 * int val; 5 * ListNode next; 6 * ListNode(int x) { val = x; } 7 * } 8 */ 9 public class Solution { 10 public ListNode mergeTwoLists(ListNode l1, ListNode l2) { 11 if(l1 == null && l2 == null) 12 return null; 13 if(l1 == null) 14 return l2; 15 if(l2 == null) 16 return l1; 17 ListNode head = null; 18 if(l1.val > l2.val) 19 { 20 head = l2; 21 head.next = mergeTwoLists(l1, l2.next); 22 } 23 else 24 { 25 head = l1; 26 head.next = mergeTwoLists(l1.next, l2); 27 } 28 return head; 29 } 30 }