劍指Offer 017 合併兩個排序的鍊錶

2021-07-11 04:05:23 字數 1695 閱讀 2190

牛客oj:合併兩個排序的鍊錶

九度oj:

github**: 017-合併兩個排序的鍊錶

csdn題解:劍指offer–017-合併兩個排序的鍊錶

牛客oj

九度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 思路 運用遞迴 如果第乙個鍊錶為空,則直接返回第二個鍊錶 如果第二個鍊錶為空,則直接返回第乙個鍊錶 如果第乙個鍊錶中的值小於第二個鍊錶中的值,則將乙個鍊錶中的相應元素插入鍊錶 如果第乙個鍊錶...