题目描述
输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
解题思路分析
这个题目很简单,可以使用递归,也可以使用循环
代码实现
//递归版本
public ListNode merge(ListNode list1, ListNode list2) {
if (list1 == null) {
return list2;
} else if (list2 == null) {
return list1;
}
ListNode merge = null;
if (list1.val < list2.val) {
merge = list1;
merge.next = merge(list1.next, list2);
} else {
merge = list2;
merge.next = merge(list1, list2.next);
}
return merge;
}
//循环版本
public ListNode merge(ListNode list1, ListNode list2) {
if (list1 == null) {
return list2;
} else if (list2 == null) {
return list1;
}
ListNode merge = null;
ListNode mergeHead = null;
ListNode head1 = list1, head2 = list2;
while (head1 != null && head2 != null) {
if (head1.val < head2.val) {
if (mergeHead == null) {
mergeHead = merge = head1;
} else {
merge.next = head1;
merge = merge.next;
}
head1 = head1.next;
} else {
if (mergeHead == null) {
merge = head2;
mergeHead = merge;
} else {
merge.next = head2;
merge = merge.next;
}
head2 = head2.next;
}
}
if (head1 != null) {
merge.next = head1;
}
if (head2 != null) {
merge.next = head2;
}
return mergeHead;
}