如何合并两个有序链表?相信很多人都还没学会这个技能,通过这篇文章的总结,希望你能学会合并两个有序链表。如下资料是关于合并两个有序链表的两种方法。
因为已经有序了,类似归并排序中的合并一样,操作不难,直接上代码了.
ListNode t = new ListNode(0);
ListNode head = t;
while(l1 != null && l2 != null)
{
if(l1.val < l2.val)
{
t.next = l1;
l1 = l1.next;
}
else
{
t.next = l2;
l2 = l2.next;
}
t = t.next;
}
while(l1 != null)
{
t.next = l1;
l1 = l1.next;
t = t.next;
}
while(l2 != null)
{
t.next = l2;
l2 = l2.next;
t = t.next;
}
return head.next;
这个可以采用递归优化,而且不用额外设置一个移动的临时结点t.首先对两个指针进行判空操作,其中一个为空的话返回另一个,然后进行递归合并,首先创建一个head结点,进行赋值后递归合并next结点,将返回值赋给head.next,最后返回head.
if(l1 == null) return l2;
if(l2 == null) return l1;
ListNode head = null;
if(l1.val < l2.val)
{
head = l1;
head.next = mergeTwoLists(l1.next, l2);
}
else
{
head = l2;
head.next = mergeTwoLists(l1, l2.next);
}
return head;
看完上述内容,你们掌握合并两个有序链表的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注亿速云行业资讯频道,感谢各位的阅读!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。