zoukankan      html  css  js  c++  java
  • 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)
        }
    }
    

    执行结果:

  • 相关阅读:
    Fy's dota2
    Black Rock Shooter
    树上的颜色
    8.spring:事务管理(上):Spring的数据库编程、编程式事务管理
    7.spring:SpringAOP(配置文件)
    6.spring:AOP(注解)
    5.spring:注解配置 Bean
    4.spriing:Bean的生命周期/工厂方法配置Bean/FactoryBean
    3.spring:自动装配/Bean之间的关系/作用域/外部文件/spel/
    2.spring:集合属性
  • 原文地址:https://www.cnblogs.com/ganshuoos/p/11384584.html
Copyright © 2011-2022 走看看