题目描述
输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
时间限制:1秒 空间限制:32768K 热度指数:278635
解答:
/*
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}*/
public class Solution {//最先比较两个链表的头结点,A链表头结点<B链表头结点,则让A的头结点指向B头结点,同时让B头节点与A链表的第二个节点比较。。。。
//注意边界值:两个链表是否为空,两个链表中的某个链表为空,则合成后的链表就是那个不为空的链表
public ListNode Merge(ListNode list1,ListNode list2) {
if (null == list1 && null == list2) {
return null;
}
if (null == list1 && null != list2) {
return list2;
}
if (null != list1 && null == list2) {
return list1;
}
ListNode nextNode = null;
ListNode head = null;
if (list2.val >= list1.val) {//确定哪个链表的头结点为合成之后的新链表的头结点
head = list1;
} else {
head = list2;
}
while (list1!=null && list2!=null) {//当这两个链表都不为空的时候,循环,直到某个链表为空就结束
if (list2.val >= list1.val) {//如果链表2的当前节点值大于链表1当前节点值,则链表1当前节点指向链表2那个节点,链表1节点指针向后移
nextNode = list1.next;
list1.next = list2;
list1 = nextNode;
} else {
nextNode = list2.next;
list2.next = list1;
list2 = nextNode;
}
}
return head;
}
}