トピックを参照してください:
2 つの昇順リストを新しい 昇順 リストにマージして返します。新しい連結リストは、指定された 2 つの連結リストのすべてのノードを接合することによって形成されます。
例 1:
入力: l1 = [1,2,4]、l2 = [1,3,4] 出力: [1,1,2,3,4,4]
例 2:
入力: l1 = []、l2 = [] 出力: []
例 3:
入力: l1 = []、l2 = [0] 出力: [0]
問題解決:
アイデア:
与えられた 2 つの連結リストは昇順であるため、2 つの連結リストの値を最初から比較し、小さい方から前の値を見つけやすくするために、ダミー ノードを作成して表すことができます。前のノード. アニメーションは次のとおりです。
コード:
struct ListNode* mergeTwoLists(struct ListNode* list1, struct ListNode* list2){
// 创建哑结点
struct ListNode {
int val = -1;
struct ListNode *next;
}dummy;
// 表示前一个结点
struct ListNode* prev = &dummy;
// 二者均非空,则进行比较
while(list1 && list2)
{
if(list1->val < list2->val)
{
prev->next = list1;
list1 = list1->next;
}
else
{
prev->next = list2;
list2 = list2->next;
}
prev = prev->next;
}
prev->next = list1 == NULL?list2:list1;
return dummy->next;
}
この記事は終わりです。