zoukankan      html  css  js  c++  java
  • 合并两个排序的链表

    合并两个排序的链表

    输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。
    
    示例1:
    
    输入:1->2->4, 1->3->4
    输出:1->1->2->3->4->4
    
    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/he-bing-liang-ge-pai-xu-de-lian-biao-lcof
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
    

    实现的思考步骤

    1. 肯定双指针了
    2. 指针拆分麻烦,不如创建个链表,比较两个链表的值
    3. 在前面有个头指针,这很巧妙

    实现代码

    /**
     * Definition for singly-linked list.
     * type ListNode struct {
     *     Val int
     *     Next *ListNode
     * }
     */
    func mergeTwoLists(l1 *ListNode, l2 *ListNode) *ListNode {
        if l1 == nil {
            return l2
        }
        if l2 == nil {
            return l1
        }
    
        res := &ListNode{}
        // 记录头指针
        head := res
        
        for {
            if l1 == nil {
                res.Next = l2
                break
            }
            if l2 == nil {
                res.Next = l1
                break
            }
    
            if l1.Val < l2.Val {
                res.Next = &ListNode{
                    Val: l1.Val,
                    Next: nil,
                }
                l1 = l1.Next
            } else {
                res.Next = &ListNode{
                    Val: l2.Val,
                    Next: nil,
                }
                l2 = l2.Next
            }
    
            res = res.Next
        }
    
        return head.Next
    }
    
  • 相关阅读:
    通过接口实现适用于SqlServer和MySql的SqlHelper
    javascript面向对象(二)
    闭包
    javascript面向对象(一)
    引用类型——function
    引用类型——数组
    引用类型
    javascript变量的作用域
    正则表达式语法
    FCKeditor插件 中文解释
  • 原文地址:https://www.cnblogs.com/maomaomaoge/p/14920793.html
Copyright © 2011-2022 走看看