题目链接: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 }