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

解题思路

通过比较两个链表的头节点,得到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;
	}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值