1, 题目
将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例:
输入:1->2->4, 1->3->4输出:1->1->2->3->4->4
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/merge-two-sorted-lists
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
2, 算法
第一步, 一个链表,直接返回第二步, 建立新链表第三步, 比较加入节点
#scalaobject Solution {def mergeTwoLists(l1: ListNode, l2: ListNode): ListNode = {if (l1 == null) {return l2}if (l2 == null) {return l1}val head = new ListNode()var current_node = headvar list1 = l1var list2 = l2while (list1 != null && list2 != null) {if (list1.x <= list2.x) {current_node.next = list1list1 = list1.nextcurrent_node = current_node.nextcurrent_node.next = null} else {current_node.next = list2list2 = list2.nextcurrent_node = current_node.nextcurrent_node.next = null}}if (list1 != null) {current_node.next = list1}if (list2 != null) {current_node.next = list2}head.next}}
#python
class Solution:
def mergeTwoLists(self, l1: ListNode, l2: ListNode) -> ListNode:
if l1 is None:
return l2
if l2 is None:
return l1
head = ListNode()
current_node = head
while l1 and l2:
if l1.val <= l2.val:
current_node.next = l1
l1 = l1.next
current_node = current_node.next
current_node.next = None
else:
current_node.next = l2
l2 = l2.next
current_node = current_node.next
current_node.next = None
if l1:
current_node.next = l1
if l2:
current_node.next = l2
return head.next
