第21題 合併二個有序列表

2021-10-22 08:34:22 字數 782 閱讀 6649

兩個鍊錶中的結點依次比較,小的放前面,然後指標不斷後移,直到至少有一方無結點(即null)為止。

題目要求

21. 合併兩個有序鍊錶

細節注意非遞迴實現:

/**

* definition for singly-linked list.

* public class listnode

* listnode(int val)

* listnode(int val, listnode next)

* }*/class

solution

if(l2 == null)

listnode node_head =

newlistnode(0

);//建立乙個虛擬頭結點,其值不重要,隨意

listnode cur = node_head;

while

(l1!=null && l2!=null)

else}if

(l1 == null)

else

if(l2 == null)

return node_head.next;

//輸出next,虛擬頭結點本身不需要

}}

遞迴演算法實現:
public listnode mergetwolists(listnode l1, listnode l2) 

if(l2 == null)

if(l1.val<=l2.val)else

}

LeetCode 第21題 合併兩個有序列表

leetcodeno.21合併兩個有序列表 題目 將兩個公升序鍊錶合併為乙個新的 公升序 鍊錶並返回。新煉表是通過拼接給定的兩個鍊錶的所有節點組成的。示例 輸入 1 2 4,1 3 4 輸出 1 1 2 3 4 4 分析 如果某乙個節點為空,乙個不為空 兩個均為空 圖示 下面的圖最後兩張中間跳過了一...

LeetCode 21合併兩個有序列表

將兩個公升序鍊錶合併為乙個新的公升序鍊錶並返回。新煉表是通過拼接給定的兩個鍊錶的所有節點組成的。輸入 1 2 4,1 3 4 輸出 1 1 2 3 4 4初始解法 這個問題轉換為經典的merge排序中的merge過程.merge排序中merge操作即是將兩個有序子陣列合併成乙個陣列,需要考慮比較過程...

leetcode第21題 合併兩個有序鍊錶

題目描述 將兩個公升序鍊錶合併為乙個新的公升序鍊錶並返回。新煉表是通過拼接給定的兩個鍊錶的所有節點組成的。示例 輸入 l1 1,2,4 l2 1,3,4 輸出 1,1,2,3,4,4 思路解析 遞迴法 根據以上規律考慮本題目 終止條件 當兩個鍊錶都為空時,表示我們對鍊錶已合併完成。如何遞迴 我們判斷...