C 每日一題(合併兩個有序鍊錶)

2021-10-02 07:47:14 字數 997 閱讀 2785

將兩個有序鍊錶合併為乙個新的有序鍊錶並返回。新煉表是通過拼接給定的兩個鍊錶的所有節點組成的。 

示例:輸入:1->2->4, 1->3->4

輸出:1->1->2->3->4->4

從鍊錶1中取出第乙個元素,記為l1,與鍊錶2的第乙個元素(記為l2)進行對比,較小的值排在新的鍊錶的頭節點,如果 l1 >= l2,將l2作為新鍊錶的頭節點,否則將l1作為新鍊錶的頭節點,然後將已操作鍊錶的後續節點遞迴與另一鍊錶進行對比

/**

* definition for singly-linked list.

* struct listnode

* };

*/class solution

if (l2==null)

listnode *head=new listnode(0);

//遞迴可以理解為之後的情況都處理好了 只需要解決好當前這步就行了

if (l1->val < l2->val)

else

return head;

}};

新建乙個帶有哨兵結點的鍊錶,依次比較兩個有序鍊錶的結點值,將較小值的結點插入到新鍊錶後面。直到其中乙個比較完畢,將另乙個鍊錶剩餘的結點全部放到新鍊錶最後面即可。最後,可以刪除哨兵結點,或者直接返回哨兵結點後第乙個結點指標

/**

* definition for singly-linked list.

* struct listnode

* };

*/class solution else

}//其中的乙個鍊錶比較完畢,將另外乙個鍊錶的剩餘節點直接插入到新建的鍊錶中

if(l1)else

temp=head;

head=head->next;

delete(temp); //刪除指標

temp=null;

return head;

}};

Leedcode 每日一題 合併兩個有序鍊錶

將兩個有序鍊錶合併為乙個新的有序鍊錶並返回。新煉表是通過拼接給定的兩個鍊錶的所有節點組成的。示例 輸入 1 2 4,1 3 4 輸出 1 1 2 3 4 4 迭代法 definition for singly linked list.struct listnode class solution el...

每日刷題 合併兩個有序鍊錶

將兩個有序鍊錶合併為乙個新的有序鍊錶並返回。新煉表是通過拼接給定的兩個鍊錶的所有節點組成的。示例 輸入 1 2 4,1 3 4 輸出 1 1 2 3 4 4 在演算法難度上,這道題可以歸為閱讀理解題。用兩個指標分別指向兩個鍊錶,然後挑選出乙個較小的節點列入所求鍊錶中,隨後將該鍊錶指標向後移動。需要注...

每日一題 合併兩個有序陣列

給你兩個有序整數陣列 nums1 和 nums2,請你將 nums2 合併到 nums1 中,使 nums1 成為乙個有序陣列。說明 初始化 nums1 和 nums2 的元素數量分別為 m 和 n 你可以假設 nums1 有足夠的空間 空間大小大於或等於 m n 來儲存 nums2 中的元素。輸入...