[LeetCode]Merge Two Sorted Lists

来源:互联网 发布:在淘宝怎么开旗舰店 编辑:程序博客网 时间:2024/06/05 09:22

题目描述

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.
将两个有序的链表合并成一个

解题思路

通过比较两个链表的头节点,得到val较小的那个作为被插入链表,即outerNode,大的那个作为待插入链表,即innerNode。
 while(outerNode!=null && innerNode!=null)
则判断innerNode和当前outerNode的val大小,小于等于则插入,outerNode不变,innerNode = innerNode.next,大于则outerNode = outerNode.next;
需要注意:被插入链表长度小于待插入链表长度的情况。

代码

public ListNode mergeTwoLists(ListNode l1, ListNode l2) {   if(l1==null && l2==null)   return null;   if(l1==null && l2!=null)   return l2;   if(l2==null && l1!=null)   return l1;   ListNode outerNode = l1;   ListNode innerNode = l2;   ListNode result,lastNode,tempNode;   //确立那个链表的头是最终的表头,将innerNode的链表插入的outerNode链表中   if(l1.val > l2.val){   outerNode = l2;   innerNode = l1;   }      result = outerNode;//最终返回的链表头   lastNode = outerNode;//记录被插入链表的上一个节点   outerNode = outerNode.next;   while(outerNode!=null && innerNode!=null){   if(innerNode.val<=outerNode.val){   //内层链表插入到外层链表中   tempNode = innerNode.next;   lastNode.next = innerNode;   innerNode.next = outerNode;   lastNode = innerNode;   innerNode = tempNode;   } else {   lastNode = outerNode;   outerNode = outerNode.next;   }   }   //如果外层链表长度小于待插入链表,则将剩余的连接上   if(outerNode==null && innerNode!=null){   lastNode.next = innerNode;   }   return result;}


0 0
原创粉丝点击