题目:https://leetcode.cn/problems/merge-two-sorted-lists/
解法:
1.递归 时间:o(n) 空间:o(1)
class Solution {
public ListNode mergeTwoLists(ListNode list1, ListNode list2) {
if(list1 == null && list2 == null) return null;
else if(list1 == null) return list2;
else if(list2 == null) return list1;
if(list1.val <= list2.val) {
list1.next = mergeTwoLists(list1.next,list2);
return list1;
}else{
list2.next = mergeTwoLists(list1,list2.next);
return list2;
}
}
}
2.循环 时间:o(n) 空间:o(1)
class Solution {
public ListNode mergeTwoLists(ListNode list1, ListNode list2) {
ListNode root = new ListNode(0);
ListNode head = root;
while(list1 != null && list2 != null){
if(list1.val <= list2.val){
head.next = list1;
list1 = list1.next;
}else{
head.next = list2;
list2 = list2.next;
}
head = head.next;
}
if(list1 == null) head.next = list2;
else if(list2 == null) head.next = list1;
return root.next;
}
}