题目
代码分析
首先不要考虑特殊情况,分析中间的情况,被插入的需要一个前面的指针pre,插入的指针需要一个next来保留现场,这道题就是pre和next的灵活应用。
第二种方法就是递归,交替的进入递归的方法。
代码展示
public static ListNode mergeTowList(ListNode head1,ListNode head2) {
ListNode res=head1.value<head2.value?head1:head2;
ListNode pre=res;
ListNode cur1=pre.next;
ListNode cur2=res==head1?head2:head1;
ListNode next=null;
while(cur1!=null&&cur2!=null)
{
if(cur1.value<=cur2.value)
{
pre=cur1;
cur1=cur1.next;
}
else
{
next=cur2.next;
cur2.next=cur1;
pre.next=cur2;
pre=cur2;
cur2=next;
}
}
if(cur1==null&&cur2!=null)
{
pre.next=cur2;
}
return res;
}递归的实现
public static ListNode mergeTowList2(ListNode head1,ListNode head2)
{
if(head1==null) return head2;
if(head2==null) return head1;
if(head1.value<head2.value)
{
head1.next=mergeTowList2(head1.next,head2);
return head1;
}else
{
head2.next=mergeTowList2(head1,head2.next);
return head2;
}
}学习情况
1次

京公网安备 11010502036488号