题目描述:输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需 要合成后的链表满足单调不减规则。
思路:递归与非递归求解,小数放在前面。
//合并两个排序的链表
//迭代,时间复杂度:O(m+n),空间复杂度:O(1)
package Function;
import Test.ListNode;
public class mergeTwoLists25 {
public ListNode mergeTwoLists2(ListNode list1, ListNode list2) {
//创建一个头结点
ListNode preHead = new ListNode(-1);
ListNode pre = preHead;
while (list1 != null && list2 != null) {
//谁小谁的指针向后移
if (list1.val < list2.val) {
pre.next = list1;
list1 = list1.next;
} else {
pre.next = list2;
list2 = list2.next;
}
//向后移一位
pre = pre.next;
}
//空指针处理的处理VS空链表
pre.next = list1 == null ? list2 : list1;
return preHead.next;
}
}