资讯专栏INFORMATION COLUMN

分析Add Two Numbers的JS解法

Jioby / 1293人阅读

摘要:原题如下意思就是数字被逆序拆分保存在链表的各个节点中,现有两条链表,要将这两条链表相加返回新的链表。以示例来说原数字为和,所以相加结果为。

原题如下:
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

意思就是数字被逆序拆分保存在链表的各个节点中,现有两条链表,要将这两条链表相加返回新的链表。
以示例来说原数字为342和465,所以相加结果为807。

var addTwoNumbers = function(l1, l2) {  
  const res = test(l1,l2,[],false);
  return res;
};  

var test = function(l1,l2,res,overflow=false){
    res = res||[];
    l1=l1||{val:0,next:null};//这里判断传入的数组是否存在
    l2=l2||{val:0,next:null};//如果不存在就给他赋值后面的对象

    //这里计算想加后的结果,Number() 函数把对象的值转换为数字
    const val = l1.val+l2.val+Number(overflow);

    if(val>=10){
        res.push(val%10);
        overflow=true;
    }else{
        res.push(val);
        overflow=false;
    }
    //所有的对象都被当作 true
    //当且仅当字符串为空时,该字符串被当作 false
    //null 和 undefined 被当作 false
    //当且仅当数字为零时,该数字被当作 false 
    if(l1.next||l2.next||overflow){
        test(l1.next,l2.next,res,overflow);
    }

    return res;
}

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/87165.html

相关文章

  • LeetCode.2 两数相加(Add Two Numbers)(JS)

    摘要:更新之前说感觉优秀答案的最后三行可以用尾递归优化不知道尾递归的小伙伴可以点这里,仔细想了一下,并不能。尾递归的实现,往往需要改写递归函数,确保最后一步只调用自身。 上周日就想写vue.nextTick的源码分析,可是总是不知道从哪儿下手,今天有时间,先把leetcode第二题补了,感觉这道题还挺简单的 一、题目 两数相加: 给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自...

    Binguner 评论0 收藏0
  • leetcode 167 Two Sum II - Input array is sorted

    摘要:同时题目假设每组输入恰好只有一个答案,并且不能重复使用同一元素。理解这道题是可以用两层循环蛮力解决的,但是效率太低了。如果这两个元素和大于目标数组,指针左移如果小于,指针右移。如果等于,则返回这两个元素的位置记得用数组的数值加一解法 题目详情 Given an array of integers that is already sorted in ascending order, fi...

    Keagan 评论0 收藏0
  • 一些做着玩

    摘要:这是我在平时有时间的时候做的一些算法上的题目想看更新请移步这里题目描述解法这个问题当时拿到的时候是完全没有思路的,后面上网查询了一下这个题目,知道了使用斐波那契数列就能够解这道题目,,,当然百度作业帮上面也有相应的解法,套路就是题目为一 这是我在平时有时间的时候做的一些算法上的题目 想看更新请移步这里 题目: Climbing Stairs 描述 You are climbing a ...

    cheukyin 评论0 收藏0
  • leetcode 2 Add Two Numbers

    摘要:我们的目的是求出两个数字的加和,并以同样的形式返回。假设每个都不会存在在首位的,除非数字本身就是想法这道题主要要求还是熟悉的操作。这道题由于数字反序,所以实际上从首位开始相加正好符合我们笔算的时候的顺序。 题目详情 You are given two non-empty linked lists representing two non-negative integers. The d...

    Integ 评论0 收藏0
  • [LintCode/LeetCode] Two Sum

    摘要:就不说了,使用的解法思路如下建立,对应该元素的值与之差,对应该元素的。然后,循环,对每个元素计算该值与之差,放入里,。如果中包含等于该元素值的值,那么说明这个元素正是中包含的对应的差值。返回二元数组,即为两个所求加数的序列。 Problem Given an array of integers, find two numbers such that they add up to a s...

    xiaoxiaozi 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<