合併兩個排序的鍊錶
輸入兩個單調遞增的鍊錶,輸出兩個鍊錶合成後的鍊錶,當然我們需要合成後的鍊錶滿足單調不減規則。
分析
兩種思路:1.假設兩個鍊錶的長度分別為n和m,以鍊錶1為基準,將鍊錶2的所有元素插入到鍊錶1,這種實現方式需要遍歷鍊錶1,總共需要m次,所以時間複雜度為o(mn);
2.從頭開始比較兩個鍊錶中元素的大小,小的元素取出形成新鍊錶的元素,只需要o(m+n)的時間複雜度,但是需要額外空間,即空間複雜度為o(m + n).
現給出第二種解法的**實現:
listnode* merge(listnode* phead1, listnode* phead2)else
node = node->next;
}if(phead1!=
null) node->next = phead1;
if(phead2!=
null) node->next = phead2;
return dazzy.next;
}
合併兩個排序鍊錶
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。解題思路 將兩個鍊錶當中的對應元素的值進行比較,重新確定新鍊錶當中元素的位置。若第乙個鍊錶當前位置的值小於第二個鍊錶當前值,則不需要改變位置,第乙個鍊錶的指標...
合併兩個排序鍊錶
問題描述 將兩個排序鍊錶合併為乙個新的排序鍊錶 樣例 給出1 3 8 11 15 null,2 null,返回1 2 3 8 11 15 null。解題思路 遍歷第二個鍊錶的每乙個節點,然後與第乙個節點的第乙個節點比較,如果第二個鍊錶節點的值小於第乙個,就插入到第乙個煉表裡,如果大於就到下乙個節點。...