美文网首页
用Swift写LeetCode(2)- 两数相加

用Swift写LeetCode(2)- 两数相加

作者: 杂货铺学徒 | 来源:发表于2019-04-24 16:30 被阅读0次

一、题目描述

给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。

如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。

您可以假设除了数字 0 之外,这两个数都不会以 0 开头。

示例:

输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)
输出:7 -> 0 -> 8
原因:342 + 465 = 807

二、解法

复杂度分析

时间复杂度:O(max(m,n)),假设 m 和 n 分别表示 l1 和 l2 的长度,上面的算法最多重复 max(m,n) 次。

空间复杂度:O(max(m,n)), 新列表的长度最多为 max(m,n)+1。

func addTwoNumbers(l1:ListNode?, l2:ListNode?) -> ListNode? {
        var node1 = l1
        var node2 = l2
        var headNode: ListNode?
        var nextNode: ListNode?
        var carry: Int = 0
        while node1 != nil || node2 != nil {
            let node1val = node1?.val ?? 0
            let node2val = node2?.val ?? 0
            node1 = node1?.next
            node2 = node2?.next
            var sum = node1val + node2val + carry
            carry = sum < 10 ? 0 : 1
            sum = sum % 10
            if nextNode == nil {
                nextNode = ListNode.init(val: sum)
                headNode = nextNode
            } else {
                nextNode?.next = ListNode.init(val: sum)
                nextNode = nextNode?.next
            }
        }
        if carry != 0 {
            nextNode?.next = ListNode.init(val: carry)
        }
        return headNode
    }

相关文章

  • 用Swift写LeetCode(2)- 两数相加

    一、题目描述 给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它...

  • Swift - LeetCode - 两数相加(2)

    题目 两个数相加 问题: 给定两个非空链表来代表两个非负整数。数字最高位位于链表开始位置。它们的每个节点只存储单个...

  • LeetCode - 两数相加(Swift)

    两数相加 给出两个非空的链表用来表示两个非负的整数。其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点...

  • LeetCode-2. 两数相加(Swift)

    来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/add-tw...

  • LeetCode 2. 两数相加(Swift)

    题目: 给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每...

  • leetcode - 2. 两数相加[Swift]

    题目描述 给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存...

  • Swift - LeetCode - 两数相加(1)

    题目 两个数相加 问题: 给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存...

  • LeetCode 2——两数相加

    1. 题目 2. 解答 循环遍历两个链表 若两个链表都非空,将两个链表结点的值和进位相加求出和以及新的进位 若其中...

  • 2、两数相加-LeetCode

    给定两个非空链表来表示两个非负整数。位数按照逆序方式存储,它们的每个节点只存储单个数字。将两数相加返回一个新的链表...

  • LeetCode 2 两数相加

    题目 给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照逆序 的方式存储的,并且它们的每个节...

网友评论

      本文标题:用Swift写LeetCode(2)- 两数相加

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