將兩個有序鍊錶合併為乙個新的有序鍊錶並返回。新煉表是通過拼接給定的兩個鍊錶的所有節點組成的。
示例:
輸入:1->2->4, 1->3->4我的思路,這個題目要是不是可以用最簡單的方式解決呢?假設兩個鍊錶的長度相等。那麼遍歷鍊錶l1,然後依次讓l2插入到l1後面。輸出:1->1->2->3->4->4
但是之後發現,題目中有可能是長度不一樣的,那麼我就更改為如果l2比l1長,那麼就從l1插入到l2,反之亦然。但是例子中又有l1或l2為空的情況,我又設定為l1為空就返回l2,反之亦然。
但是我在這裡卡住了。
輸入這裡明顯l2比l1長,那麼應該講l1插入到l2中,最終結果應該是1,5,2,4,後面認真審題後發現,題目為講兩個有序鍊錶合併為乙個新的有序鍊錶並返回。也就是說,[5][1,2,4]
輸出[1,5,2,4]
預期結果
[1,2,4,5]
輸入的兩個鍊錶都是有序的,而且輸入的鍊錶可能為0;
輸出的鍊錶也是有序的,而且是通過輸入鍊錶組合而得到的。
重新整理一下思路,首先對邊界進行限制,即考慮l1和l2為null的情況,然後將l1中的元素插入到l2中去。
寫了一段時間,不會,直接看答案吧,
有2中解法,我使用了迭代的方法,成功了,唯一需要注意的是最後乙個元素需要單獨新增。
listnode*
mergetwolists
(listnode* l1, listnode* l2)
if(l2 ==
null
) listnode* p1 = l1;
listnode* p2 = l2;
listnode* head = new listnode(0
);listnode* p = head;
//迭代方法
while
( p2!=
null
&& p1!=
null
)else
p = p->next;}if
(p1 ==
null)if
(p2 ==
null
)return head->next;
}
leetcode合併兩個有序列表
將兩個有序鍊錶合併為乙個新的有序鍊錶並返回。新煉表是通過拼接給定的兩個鍊錶的所有節點組成的。例如 輸入 1 2 4,1 3 4 輸出 1 1 2 3 4 4 class solution def mergetwolists self,l1 listnode,l2 listnode listnode ...
Go實現合併兩個有序列表(leetcode 21)
將兩個有序鍊錶合併為乙個新的有序鍊錶並返回。新煉表是通過拼接給定的兩個鍊錶的所有節點組成的。示例 輸入 1 2 4,1 3 4 輸出 1 1 2 3 4 4 如下 definition for singly linked list.type listnode struct func mergetwo...
LeetCode 簡單 合併兩個有序列表 c
題目為將兩個有序鍊錶合併為乙個新的有序鍊錶並返回。新煉表是通過拼接給定的兩個鍊錶的所有節點組成的。示例 輸入 1 2 4,1 3 4 輸出 1 1 2 3 4 4 其中存在乙個類,結構為 public class listnode 每乙個都會指向下乙個元素。編寫的c 如下 public static...