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

    题目信息

    将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 
    示例:
    输入:1->2->4, 1->3->4
    输出:1->1->2->3->4->4

    解题思路

    创建一个头部指针pHead,比较两个传入链表的头指针的数据大小,将pHead的next指针指向较小数据链表的数据,并将该该链表的next后移,直到两个列表都不为空。

    代码

    public class ListNode {
        public var val: Int
        public var next: ListNode?
        
        public init(_ val: Int) {
            self.val = val
            self.next = nil
        }
    }
    
    func mergeTwoLists(_ l1: ListNode?, _ l2: ListNode?) -> ListNode? {
        var list1 = l1
        var list2 = l2
        // 创建头部指针
        let pHead = ListNode(-1)
        var preN = pHead
        // 当两个链表都不为空时执行
        while list1 != nil && list2 != nil {
            // 当前指针指向较小数据的链表,并将该链表的指针后移
            if list1!.val < list2!.val {
                preN.next = list1
                list1 = list1?.next
            }
            else {
                preN.next = list2
                list2 = list2?.next
            }
            preN = preN.next!
        }
        // 将不为空的链表拼接到新创建的链表中
        preN.next = (list1 == nil ? list2 : list1)
        return pHead.next
    }

    题目链接

  • 相关阅读:
    Web开发规范
    选择器优先级计算
    CSS 技巧
    CSS3滤镜
    CSS3动画
    css3 <3D 转换>
    CSS3 2D 转换
    CSS3文本(text)模型
    CSS3颜色和渐变
    王道8.6
  • 原文地址:https://www.cnblogs.com/muzichenyu/p/12746103.html
Copyright © 2011-2022 走看看