一、题目描述
输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
二、代码分析
/*
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}*/
public class Solution {
public ListNode Merge(ListNode list1,ListNode list2) {
//首先确保不能为空
if(list1==null&&list2==null)
return null;
if(list1==null&&list2!=null)
return list2;
if(list1!=null&&list2==null)
return list1;
ListNode head = null; //定义一个head节点,用来存放所有数据
//如果list1的头结点的值小于list2的头结点的值
if(list1.val<list2.val){
head = list1; //把list1节点赋值给head节点
list1 = list1.next; //取出list1的下一个结点
}
else{
head = list2; //否则吧list2结点赋值给head结点
list2 = list2.next; //取出list2的下一个结点
}
ListNode cur = head; //当前节点为head
cur.next=null;
//只要list1或者list2中有一个为null了就跳出循环
while(list1!=null&&list2!=null){
if(list1.val<list2.val){
cur.next = list1;
list1 = list1.next;
}
else{
cur.next = list2;
list2 = list2.next;
}
cur = cur.next;
cur.next = null;
}
//继续将剩下的元素添加进来
if(list1==null&&list2!=null){
cur.next =list2;
}else if(list2==null&&list1!=null){
cur.next = list1;
}
return head;
}
}
运行结果: