Merge Two Sorted Lists
Merge two sorted linked lists and return it as a new list. The new list should be made by splicing together the nodes of the first two lists.
分析:
合并两个有序的链表。
代码:
# Definition for singly-linked list.
class ListNode(object):
def __init__(self, x):
self.val = x
self.next = None
class Solution(object):
def mergeTwoLists(self, l1, l2):
"""
:type l1: ListNode
:type l2: ListNode
:rtype: ListNode
"""
l1_p = l1 # point to l1
l2_p = l2 # point to l2
l3_p = l3 = ListNode(0) # point to the new LinkList
INT_MAX = 100000000
while l1_p or l2_p:
val1 = (l1_p.val if l1_p else INT_MAX)
val2 = (l2_p.val if l2_p else INT_MAX)
if val1 <= val2:
l3_p.next = l1_p
l1_p = l1_p.next
else:
l3_p.next = l2_p
l2_p = l2_p.next
l3_p = l3_p.next
# self.outputList(l3.next)
return l3.next
def initList(self, lst):
l = ListNode(lst[0])
p = l
for i in lst[1:]:
p.next = ListNode(i)
p = p.next
return l
def outputList(self, l):
l_p = l
while l_p:
print l_p.val,
l_p = l_p.next
print