赞
踩
以下是使用递归方式实现的完整Java代码,用于将两个升序链表合并为一个新的升序链表:
class ListNode {
int val;
ListNode next;
ListNode(int x) { val = x; }
}
class Solution {
public ListNode mergeTwoLists(ListNode list1, ListNode list2) {
// 递归终止条件:如果其中一个链表为空,返回另一个链表
if (list1 == null) {
return list2;
}
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;
}
}
}
在 mergeTwoLists
方法中,我们使用了递归的方式来合并两个链表。首先,我们检查递归的终止条件:如果其中一个链表为空,我们直接返回另一个链表。然后,我们比较两个链表的头节点的值,将较小的节点作为新链表的头节点,并递归地合并剩余的部分。最后,我们返回合并后的新链表。
请注意,上述代码假设输入的链表 list1
和 list2
已经是升序排列的。如果输入的链表不是升序排列的,那么合并后的链表可能不是升序排列的。在实际应用中,你可能需要首先对链表进行排序,然后再使用上述代码进行合并。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。