牛客oj:合併兩個排序的鍊錶牛客oj九度oj:
github**: 017-合併兩個排序的鍊錶
csdn題解:劍指offer–017-合併兩個排序的鍊錶
九度oj
csdn題解
github**
合併兩個排序的鍊錶
1519-合併兩個排序的鍊錶
劍指offer–017-合併兩個排序的鍊錶
017-合併兩個排序的鍊錶
您也可以選擇回到目錄-劍指offer–題集目錄索引
其實這道題跟leetcode上一道題是一樣的題目描述leetcodet題解–21. merge two sorted lists(合併兩個排序好的鍊錶)
當然他還有很多變種,比如說兩個鍊錶擴充套件成為k個的時候
leetcodet題解–23. merge k sorted lists(合併k個已排序的鍊錶)
輸入兩個單調遞增的鍊錶,輸出兩個鍊錶合成後的鍊錶,當然我們需要合成後的鍊錶滿足單調不減規則。
樣例輸入
1 3 5 7 9樣例輸出2 4
1 2 3 4 5 7 9思路很簡單,用兩個指標同步遍歷兩個鍊錶,每次找到小的那個插入到新的鍊錶中
#include
using
namespace
std;
// 除錯開關
#define __tmain main
#ifdef __tmain
#define debug cout
#else
#define debug 0 && cout
#endif // __tmain
#ifdef __tmain
struct listnode
};#endif // __tmain
class solution
else
if(pright == null)
listnode *left = pleft;
listnode *right = pright;
// 先生成頭結點
listnode *head = null;
if(left->val < right->val)
else
}// 處理較長鍊錶的剩餘部分
if(left != null)
else
return head;
}};int __tmain( )
return
0;}
其實思路一樣,只是由於每次新增節點,都是機械性地重複工作,因此可以用遞迴來實現
class solution
else
if(pright == null)
listnode *head = null;
if(pleft->val < pright->val)
else
return head;
}};
劍指offer 合併兩個排序列表
題目描述 輸入兩個單調遞增的鍊錶,輸出兩個鍊錶合成後的鍊錶,當然我們需要合成後的鍊錶滿足單調不減規則。簡單,但是有三種方法 1.建立乙個額外鍊錶 最好理解,但是浪費空間 public listnode merge listnode list1,listnode list2 else if p2 nu...
劍指offer 合併兩個鍊錶
輸入兩個單調遞增的鍊錶,輸出兩個鍊錶合成後的鍊錶,當然我們需要合成後的鍊錶滿足單調不減規則。新建乙個節點作為head,依次遍歷兩個陣列 時間複雜度 o n 空間複雜度 o 1 coding utf 8 class listnode def init self,x self.val x self.ne...
劍指offer 合併兩個排序的陣列
1 題目描述 輸入兩個單調遞增的鍊錶,輸出兩個鍊錶合成後的鍊錶,當然我們需要合成後的鍊錶滿足單調不減規則。2 思路 運用遞迴 如果第乙個鍊錶為空,則直接返回第二個鍊錶 如果第二個鍊錶為空,則直接返回第乙個鍊錶 如果第乙個鍊錶中的值小於第二個鍊錶中的值,則將乙個鍊錶中的相應元素插入鍊錶 如果第乙個鍊錶...