• LeetCode两数相加Swift


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

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

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

    示例:

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

    算法思路:

    1.遍历两个表node
    
    2.计算新表node点sum value
    
    3.由于第一个节点不需要计算carry值,导致逻辑不一致,故先默认创建一个初始node
    
    4.最后添加进位产生的新node
    
    5.返回新建node.next指向的表(不包含初始node)

    解法:

    /**
     * Definition for singly-linked list.
     * public class ListNode {
     *     public var val: Int
     *     public var next: ListNode?
     *     public init(_ val: Int) {
     *         self.val = val
     *         self.next = nil
     *     }
     * }
     */
    class Solution {
        func addTwoNumbers(_ l1: ListNode?, _ l2: ListNode?) -> ListNode? {
            let result: ListNode = ListNode(0)
                
                var p: ListNode? = l1
                var q: ListNode? = l2
                var head = result
                
                var carry = 0
                while (p != nil)||(q != nil) {
                    
                    let sum = (p?.val ?? 0) + (q?.val ?? 0) + carry
                    
                    carry = sum / 10
                    head.next = ListNode(sum%10)
                    head = head.next!
                    p = p?.next
                    q = q?.next
                }
                
                if carry > 0 {
                    head.next = ListNode(carry)
                }
                
                return result.next
        }
    }
  • 相关阅读:
    c++中vector的用法详解[转]
    C++ String
    va_list用法
    如何高效的分析AWR报告
    Oracle存储过程跟踪错误的方法
    Oracle找出锁,并KILL掉
    OracleAWR报告概念和生成
    Linux系统的内存管理
    AIX系统下配置FTP服务
    通过修改注册表配置IE选项
  • 原文地址:https://www.cnblogs.com/huangzs/p/13693300.html
Copyright © 2020-2023  润新知