21. Merge Two Sorted Lists

来源:互联网 发布:linux设置javahome 编辑:程序博客网 时间:2024/06/11 01:06

这里写图片描述

题目大意:
有两个已经排好序的链表,现在要合并这两个链表,同时保证大小顺序不变,返回合并后的链表,如: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 = Noneclass 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
0 0