题目大意:
有两个已经排好序的链表,现在要合并这两个链表,同时保证大小顺序不变,返回合并后的链表,如:1->3->5和1->4合并后为:1->1->3->4->5
思路:
令i,j分别为两个链表的起始节点,选择值较小的那个节点,加入到返回链表中,此处i指向的节点的值为1,j指向节点的值为1,两个值相等,(相等时默认加入i),此处把 i 指向的节点加入到返回链表中,随后 i 后移一位。
之后,i指向的节点的值为3,j指向的节点的值为1,1 < 3,所以把j指向的节点加入到返回链表中。
之后同上。。
最后,当j == null时,把i及i之后的节点链表直接加入到返回链表中即可。
Python代码:
# 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
"""
i = l1
j = l2
r = ListNode(-1)
h = r
while i != None and j != None:
if i.val <= j.val:
r.next = i
i = i.next
else:
r.next = j
j = j.next
r = r.next
while i != None:
r.next = i
i = i.next
r = r.next
while j != None:
r.next = j
j = j.next
r = r.next
return h.next