合并两个有序链表

将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例 1:
输入:l1 = [1,2,4], l2 = [1,3,4]
输出:[1,1,2,3,4,4]
示例 2:
输入:l1 = [], l2 = []
输出:[]
示例 3:
输入:l1 = [], l2 = [0]
输出:[0]
解题
两个链表都是升序排列,只需要将两个链表依次比较 再拼接成一个链表即可。

public ListNode mergeTwoLists(ListNode l1,ListNode l2){
	//先判断两个链表是否为空,为空返回另一个
	if(l1 == null || l2 == null){
		return l1==null?l2:l1;
	}
	//确定哪一个链表当头
	ListNode head = l1.val<=l2.val?l1:l2;
	//选中的链表从第二个节点开始循环
	ListNode cur1 = head.next;
	//确认cur2是那个链表
	ListNode cur2 = l1==head?l2:l1;
	//pre做置换,头部为head
	ListNode pre = head;
	//只要有一个链表等于null就跳出循环
	while(cur1!=null && cur2!=null){
		//判断值大小排序
		if(cur1.val<=cur2.val){
			//新链表移位
			pre.next = cur1;
			//链表一向后一位
			cur1=cur1.next
		}else{
			pre.next = cur2;
			cur2 = cur2.next;
		}
		pre = pre.next;
	}
	//一个链表为空,把别一个链表后边添加到新链表上
	pre.next = cur1==null?cur2:cur1
	return head;
}
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值