• Leetcode 刷题笔记二 两数相加(使用链表) -- scala版本


    Leetcode 刷题笔记二 两数相加(使用链表) -- scala版本

    原地址:两数相加

    问题描述:

    题干:

    You are given two non-empty linked lists representing two non-negative integers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return it as a linked list.

    You may assume the two numbers do not contain any leading zero, except the number 0 itself.

    例子:

    Input: (2 -> 4 -> 3) + (5 -> 6 -> 4)
    Output: 7 -> 0 -> 8
    Explanation: 342 + 465 = 807.
    

    简要思路分析:

    使用链表的思路,同步推进链表上的数字进行计算。推进过程中进行链表非空的判断,若一条链上的数字已经跑完,将其值域设为0,在计算过程中,计算l1的值域和l2的值域的和, 判断其值是否会有进位,将进位与剩余数字作为一个元组保存,用于下一步的迭代。

    代码补充:

    /**
     * Definition for singly-linked list.
     * class ListNode(var _x: Int = 0) {
     *   var next: ListNode = null
     *   var x: Int = _x
     * }
     */
    object Solution {
        def addTwoNumbers(l1: ListNode, l2: ListNode): ListNode = {
            //
            def calculate(l1: ListNode, l2: ListNode, carryOver: Option[Int]): ListNode={
            //
            if (l1 == null && l2 == null && carryOver.isEmpty){
                null
            }
            else{
                val x1 = if(l1 == null) 0 else l1.x
                val x2 = if(l2 == null) 0 else l2.x
                
                val (n, co) = {
                    val sum = x1 + x2 + carryOver.getOrElse(0)
                    if (sum > 9){
                        (sum%10, Some(sum/10))
                    }
                    else{
                        (sum, None)
                    }
                }
                
                val r1 = new ListNode(n)
                val n1 = if(l1 == null) null else l1.next
                val n2 = if(l2 == null) null else l2.next
                
                r1.next = calculate(n1, n2, co)
                r1
            }     
           }
            
            calculate(l1,l2,None)
        }
    }
    

    执行结果:

  • 相关阅读:
    BlogEngine.Net
    加速Web开发的9款知名HTML5框架
    个人论坛博客的代码
    Android客户端调用Asp.net的WebService
    前端总结数据结构与算法基础
    node知识点及第三方模块
    消息轮播
    el-date-picker 组件时间格式化方式
    Vue+Element前端导入导出Excel
    vue单元测试
  • 原文地址:https://www.cnblogs.com/ganshuoos/p/11384584.html
Copyright © 2020-2023  润新知