輸入兩個單調遞增的鍊錶,輸出兩個鍊錶合成後的鍊錶,當然我們需要合成後的鍊錶滿足單調不減規則。
方法一(非遞迴):
# -*- coding:utf-8 -*-
# class listnode:
# def __init__(self, x):
# self.val = x
# self.next = none
class solution:
# 返回合併後列表
def merge(self, phead1, phead2):
first = head = listnode(0)
while phead1 and phead2:
if phead1.val <= phead2.val:
head.next = phead1
phead1 = phead1.next
else:
head.next = phead2
phead2 = phead2.next
head = head.next
if phead1:
head.next = phead1
if phead2:
head.next = phead2
return first.next
方法二(遞迴):
# -*- coding:utf-8 -*-
# class listnode:
# def __init__(self, x):
# self.val = x
# self.next = none
class solution:
# 返回合併後列表
def merge(self, phead1, phead2):
if not phead1:
return phead2
if not phead2:
return phead1
if phead1.val <= phead2.val:
phead1.next = self.merge(phead1.next, phead2)
return phead1
else:
phead2.next = self.merge(phead1, phead2.next)
return phead2
更多題目包括leetcode、牛客網、各種排序演算法解法參見個人github,持續更新中,歡迎star ~~ leetcode 21 合併公升序鍊錶
將兩個公升序鍊錶合併為乙個新的 公升序 鍊錶並返回。新煉表是通過拼接給定的兩個鍊錶的所有節點組成的。示例 輸入 1 2 4,1 3 4 輸出 1 1 2 3 4 4 1.考慮遞迴,如果遍歷的時候,l1節點值小於l2,則返回的應該為此時的l1節點及l1.next和l2拼接後的結果,這就形成了遞迴的條件...
Leetcode 21 合併有序鍊錶
題目簡介 將兩個有序鍊錶合併為乙個新的有序鍊錶並返回。新煉表是通過拼接給定的兩個鍊錶的所有節點組成的。示例 輸入 1 2 4,1 3 4 輸出 1 1 2 3 4 4 include using namespace std definition for singly linked list.stru...
LEETCODE 21合併有序鍊錶
將兩個有序鍊錶合併為乙個新的有序鍊錶並返回。新煉表是通 過拼接給定的兩個鍊錶的所有節點組成的。1.迭代法,比較原兩煉表中元素大小後將元素插入新的鍊錶中 listnode mergetwolists listnode l1,listnode l2 else prev prev next prev ne...