21. 合并两个有序链表

题目链接:https://leetcode.com/problems/merge-two-sorted-lists/

 

解题思路:

合并两个有序的链表,非递归

先定义一个空链表,merge指向头指针。

判定l1.val 和 l2.val的大小,取小的merge.next = l1,然后merge要指向下一个指针,l1也要向后挪动一个。

因为merge要动,所以必须要保证一个不动,返回的时候就是head.next。

 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 class Solution {
10     public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
11         
12         if(l1==null)
13             return l2;
14         if(l2==null)
15             return l1;
16         
17         ListNode head = new ListNode(-1);
18         ListNode merge = head;
19         
20         while(l1!=null&&l2!=null)
21         {
22             if(l1.val<l2.val)
23             {
24                 merge.next =l1;
25                 merge = merge.next;
26                 l1 = l1.next;
27             }
28             else
29             {
30                 merge.next = l2;
31                 merge = merge.next;
32                 l2 = l2.next;
33             }
34         }
35         if(l1!=null)
36         {
37             merge.next = l1;
38         }
39         if(l2!=null)
40         {
41             merge.next = l2;
42         }
43         return head.next;
44         
45     }
46 }

 

posted @ 2019-05-07 22:40  王爷爱吃秋刀鱼  阅读(89)  评论(0编辑  收藏  举报