您好,登錄后才能下訂單哦!
如何合并兩個有序鏈表?相信很多人都還沒學會這個技能,通過這篇文章的總結,希望你能學會合并兩個有序鏈表。如下資料是關于合并兩個有序鏈表的兩種方法。
因為已經有序了,類似歸并排序中的合并一樣,操作不難,直接上代碼了.
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進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。