原题
https://leetcode.cn/problems/merge-two-sorted-lists/
思路
虚拟节点
复杂度
时间:O(n)
空间:O(n)
Python代码
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution:
def mergeTwoLists(self, list1: Optional[ListNode], list2: Optional[ListNode]) -> Optional[ListNode]:
dummy = ListNode(-1)
curr = dummy
while list1 or list2:
if not list1:
curr.next = list2
list2 = list2.next
elif not list2:
curr.next = list1
list1 = list1.next
elif list1.val <= list2.val:
curr.next = list1
list1 = list1.next
else:
curr.next = list2
list2 = list2.next
curr = curr.next
return dummy.next
Go代码
/**
* Definition for singly-linked list.
* type ListNode struct {
* Val int
* Next *ListNode
* }
*/
func mergeTwoLists(list1 *ListNode, list2 *ListNode) *ListNode {
dummy := ListNode{}
cur := &dummy
for list1 != nil || list2 != nil {
if list1 == nil {
cur.Next = list2
list2 = list2.Next
} else if list2 == nil {
cur.Next = list1
list1 = list1.Next
} else if list1.Val <= list2.Val {
cur.Next = list1
list1 = list1.Next
} else {
cur.Next = list2
list2 = list2.Next
}
cur = cur.Next
}
return dummy.Next
}
712

被折叠的 条评论
为什么被折叠?



