美文网首页
21. 合并两个有序链表

21. 合并两个有序链表

作者: 王侦 | 来源:发表于2022-09-30 08:45 被阅读0次

    题目地址(21. 合并两个有序链表)

    https://leetcode.cn/problems/merge-two-sorted-lists/

    题目描述

    将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 
    
    

    前置知识

    公司

    • 暂无

    思路

    • 注意Go不支持三元运算符

    关键点

    代码

    • 语言支持:Go

    Go Code:

    
    /**
     * Definition for singly-linked list.
     * type ListNode struct {
     *     Val int
     *     Next *ListNode
     * }
     */
    func mergeTwoLists(list1 *ListNode, list2 *ListNode) *ListNode {
        dummy := &ListNode{}
        prev := dummy
        for list1 != nil && list2 != nil {
            if (list1.Val <= list2.Val) {
                prev.Next = list1
                list1 = list1.Next
            } else {
                prev.Next = list2
                list2 = list2.Next
            }
            prev = prev.Next
        }
        if list1 == nil {
            prev.Next = list2 
        } else {
            prev.Next = list1
        }
             
        return dummy.Next
    }
    
    

    复杂度分析

    令 n 为数组长度。

    • 时间复杂度:O(n)
    • 空间复杂度:O(1)

    相关文章

      网友评论

          本文标题:21. 合并两个有序链表

          本文链接:https://www.haomeiwen.com/subject/zwelartx.html