1 题目
LeetCode第21题,合并两个有序链表.
2 直接合并
因为已经有序了,类似归并排序中的合并一样,操作不难,直接上代码了.
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;
3 递归合并
这个可以采用递归优化,而且不用额外设置一个移动的临时结点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;
4 源码
點擊查看更多內容
為 TA 點贊
評論
評論
共同學習,寫下你的評論
評論加載中...
作者其他優質文章
正在加載中
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦