class ListNode():
def __init__(self, x):
self.val = x
self.next = None
class Solution():
def mergeTwoLists(self, l1, l2):
cur = dummy = ListNode(0)
while l1 and l2:
if l1.val <= l2.val:
cur.next, l1 = l1, l1.next
else:
cur.next, l2 = l2, l2.next
cur = cur.next
cur.next = l1 or l2
return dummy.next
if __name__ == "__main__":
l1, l1.next = ListNode(0), ListNode(3)
l2, l2.next = ListNode(1), ListNode(2)
result = Solution().mergeTwoLists(l1, l2)
assert '{0}->{1}->{2}->{3}'.format(result.val, result.next.val, result.next.next.val, result.next.next.next.val) \
== '0->1->2->3'