今日题目(剑指Offer系列)
剑指 Offer 25. 合并两个排序的链表
输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。
示例:
示例1: 输入:1->2->4, 1->3->4 输出:1->1->2->3->4->4
解题思路:
>这是典型的归并排序 >就是分别遍历两个链表的节点 >如果l1<l2,那么就将l1对应的节点添加到l3 >反之将l2的节点加到l3 >直到有一方为空为止 >但此时有可能存在一条链表还没有遍历完 >所以判断两条链表是否为空,不为空,直接将其添加到l3的尾部
Python解法:
class Solution: def mergeTwoLists(self, l1: ListNode, l2: ListNode) -> ListNode: head=l3=ListNode() while l1!=None and l2!=None: if l1.val<=l2.val: l3.next=ListNode(l1.val) l1=l1.next else: l3.next=ListNode(l2.val) l2=l2.next l3=l3.next if l1!=None: l3.next=l1 if l2!=None: l3.next=l2 return head.next
Java解法:
class Solution { public ListNode mergeTwoLists(ListNode l1, ListNode l2) { ListNode l3=new ListNode(); ListNode head=l3; while(l1!=null&&l2!=null){ if(l1.val<=l2.val){ l3.next=new ListNode(l1.val); l1=l1.next; }else{ l3.next=new ListNode(l2.val); l2=l2.next; } l3=l3.next; } if(l1!=null){ l3.next=l1; } if(l2!=null){ l3.next=l2; } return head.next; } }