title: 每日一練(14):合併兩個排序的鍊錶
categories:[劍指offer]
tags:[每日一練]
date: 2022/01/27
輸入兩個遞增排序的鍊錶,合併這兩個鍊錶並使新鍊錶中的節點仍然是遞增排序的。
示例1:
輸入:1->2->4, 1->3->4
輸出:1->1->2->3->4->4
限制:0 <= 鍊錶長度 <= 1000
我們的目的是將兩個有序鍊錶合併成乙個有序鍊錶,因此,我們的每次操作都是獲取 l1 指向的結點和 l2 指向的結點中,值較小的結點。迭代和遞迴都是如此。
使用迭代的時候
使用遞迴的時候
迭代
listnode* mergetwolists(listnode* l1, listnode* l2) else
head = head->next;
}head->next = l1 == null ? l2 : l1;
return ret->next;
}
編寫遞迴的第一步,應當是明確當前函式應當完成的功能。
函式功能
函式結束條件
listnode* mergetwolists(listnode* l1, listnode* l2)
if (l1->val < l2->val) else
}
每日一練(13) 反轉鍊錶
title 每日一練 13 反轉鍊錶 categories 劍指offer tags 每日一練 date 2022 01 26 定義乙個函式,輸入乙個鍊錶的頭節點,反轉該鍊錶並輸出反轉後鍊錶的頭節點。示例 輸入 1 2 3 4 5 null 輸出 5 4 3 2 1 null 限制 0 節點個數 5...
合併兩個排序鍊錶
struct listnode class solution else while pstart1 null pstart2 null plast next pstart1 plast pend1 pend1 pend1 next pstart1 pend1 else plast next psta...
合併兩個排序鍊錶
描述 將兩個排序鍊錶合併為乙個新的排序鍊錶樣例 給出1 3 8 11 15 null,2 null,返回1 2 3 8 11 15 null。解題思路 將兩個鍊錶當中的對應元素的值進行比較,重新確定新鍊錶當中元素的位置。若第乙個鍊錶當前位置的值小於第二個鍊錶當前值,則不需要改變位置,第乙個鍊錶的指標...