Merge Two Sorted Lists


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.
題意:把兩個有序的鏈表合併成一個有序鏈表

思路:歸併排序的歸併部分,兩個指針指向鏈表的頭節點,比較元素大小,把小的先加入結果鏈表,而且該指針後移。若是其中一個鏈表到達尾部,則將另外一個鏈表的剩餘部分複製到結果鏈表

實現:
/**
 * Definition for singly - linked list.
 * public class ListNode {
 *     int val ;
 *     ListNode next;
 *     ListNode( int x) {
 *         val = x;
 *         next = null;
 *     }
 * }
 */
public class Solution {
      public ListNode mergeTwoLists(ListNode l1, ListNode l2 ) {
           ListNode first= new ListNode(0);//結果鏈表
           ListNode l= first;
           while (l1 != null|| l2!= null){
              
               ListNode t= new ListNode(0);
               if (l1 == null){ //若是l1鏈表到結尾,則把另外一個鏈表以此複製到結果鏈表
                    t.val= l2.val;
                    l2= l2.next;
              }
               else if (l2 == null){ //若是l2鏈表到結尾,則把另外一個鏈表以此複製到結果鏈表
                    t.val= l1.val;
                    l1= l1.next;
              }
               else if (l1 .val<l2 .val){//把兩個指針對應的值小的元素的節點加入結果鏈表
                    t.val= l1.val;
                    l1= l1.next;
              }
               else { //把兩個指針對應的值小的元素的節點加入結果鏈表
                    t.val= l2.val;
                    l2= l2.next;
              }
               l.next= t;
               l= t;
          }
           return first .next;
     }
}
相關文章
相關標籤/搜索