https://leetcode.com/problems/merge-two-sorted-lists/?tab=Description
題目要求是:給定兩個已排序的列表,返回一個把這兩個列表合并的新的列表。
解題思路:由于兩個列表都是已經排好序的,假設是按升序排列的,那么我們可以從頭開始取,比較這兩個列表l1,l2“最前面”的元素的大小,若l1的最前面的元素小于l2的,那么接下來,把l1的當前比較元素的后一個元素作為此鏈表”最前面”的元素,再次比較當前l(fā)1,l2的最前面的元素的大小,直到他們的最前面元素為空。當有一個鏈表的最前面元素為空時,這時要返回另一個鏈表的最前面元素。
可以看出,這是一個recursive的過程,需要不斷的重復遞歸比較的過程,代碼如下。
/**
* Definition for singly-linked list.
* public class ListNode {
*? ? int val;
*? ? ListNode next;
*? ? ListNode(int x) { val = x; }
* }
*/
public class Solution {
public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
if(l1==null) return l2;
if(l2==null) return l1;
if(l1.val < l2.val)
{
l1.next = mergeTwoLists(l1.next , l2);
return l1;
}
else
{
l2.next = mergeTwoLists(l1, l2.next);
return l2;
}
}
}