解法1:双指针。
class Solution {
public ListNode mergeTwoLists(ListNode list1, ListNode list2) {
if(null==list1) return list2;
if(null==list2) return list1;
ListNode pHead=new ListNode();
ListNode t=pHead;
while(null!=list1 && null!=list2){
if(list1.val<=list2.val){
t.next=list1;
list1=list1.next;
}else{
t.next=list2;
list2=list2.next;
}
t=t.next;
}
if(null==list1){
t.next=list2;
}
if(null==list2){
t.next=list1;
}
return pHead.next;
}
}
解法2:递归。
public ListNode mergeTwoLists(ListNode list1, ListNode list2) {
if(null==list1) return list2;
if(null==list2) return list1;
if(list1.val<=list2.val){
list1.next=mergeTwoLists(list1.next,list2);
return list1;
}else{
list2.next=mergeTwoLists(list1,list2.next);
return list2;
}
}
本文介绍了一种合并两个有序链表的方法,提供了两种实现方案:双指针迭代法和递归法。双指针法通过比较两个链表节点的值来决定合并顺序,递归法则直接利用函数调用自身完成合并过程。
514

被折叠的 条评论
为什么被折叠?



