题目

2.两数相加

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

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

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

示例:

输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)

输出:7 -> 0 -> 8

原因:342 + 465 = 807

思路

  • JavaScript解法

  • 这个题目之前咋一看以为很简单,只要数组每项相加取余进位就可以了,但是我网络它是链表哇!!!所以一开始给我们的两个好像是数组的东东,其实是两个链表的首部,知道了这个之后,解题就变得简单了。具体的解释见代码注释。

  • 复杂度的话取决于最大的数的位数,运行时间在130ms左右,内存消耗41.5MB左右

代码

/**
* Definition for singly-linked list.
* function ListNode(val) {
* 看这里看这里,先看看ListNode
* this.val = val;
* this.next = null;
* }
*/
/**
* @param {ListNode} l1
* @param {ListNode} l2
* @return {ListNode}
*/
var addTwoNumbers = function(l1, l2) {
let temp = new ListNode(0); // 可以先看看上面ListNode的结构
const result = temp; // 记录结果指针的首部
let index = 0; // 进位,用于记录两数相加是否进位
for (;l1||l2||index;) { // 当且仅当l1,l2皆为null且无进位时,结束循环
let next = new ListNode(); // 新建一个节点 temp.next = next; // 将结果链表的下一个指向新创建的节点
temp = next; // 将结果链表的当前节点设为新创建的节点,以便下次循环可以接上 let val = index; // val是进位与两个数当前位相加的结果,这里先设为进位的数值 if (l1) { // l1不为null的时候,可以认定l1.val不为undefined,下面同理
val += l1.val;
l1 = l1.next;
}
if (l2) {
val += l2.val;
l2 = l2.next;
} next.val = val; // 因为是引用类型,所以这里也可以写作temp.val if (next.val > 9) {
index = 1; // 进位
next.val %= 10;
} else {
index = 0;
}
next = null //释放内存
}
return result.next; //注意这里是下一个节点
};

注意点

  • 这个题目主要就是要理解好链表是怎么一回事,再去写的时候就很顺风顺水了。

leetcode_2-两数相加_javascript的更多相关文章

  1. [CareerCup] 18.1 Add Two Numbers 两数相加

    18.1 Write a function that adds two numbers. You should not use + or any arithmetic operators. 这道题让我 ...

  2. ✡ leetcode 167. Two Sum II - Input array is sorted 求两数相加等于一个数的位置 --------- java

    Given an array of integers that is already sorted in ascending order, find two numbers such that the ...

  3. [Swift]LeetCode2. 两数相加 | Add Two Numbers

    You are given two non-empty linked lists representing two non-negative integers. The digits are stor ...

  4. [Swift]LeetCode445. 两数相加 II | Add Two Numbers II

    You are given two non-empty linked lists representing two non-negative integers. The most significan ...

  5. day2——两数相加

    // 小白一名,0算法基础,艰难尝试算法题中,若您发现本文中错误, 或有其他见解,往不吝赐教,感激不尽,拜谢. 领扣 第2题 今日算法题干//给定两个非空链表来表示两个非负整数.位数按照逆序方式存储, ...

  6. leetcode 刷题(2)--- 两数相加

    给定两个非空链表来表示两个非负整数.位数按照逆序方式存储,它们的每个节点只存储单个数字.将两数相加返回一个新的链表. 你可以假设除了数字 0 之外,这两个数字都不会以零开头. 示例: 输入:(2 -& ...

  7. Leetcode_两数相加_python

    小编从今天起要开始分享一些Leetcode代码,通过好好练习编程能力,争取以后找一份好工作. 题目:两数相加 # Definition for singly-linked list. # class ...

  8. Leetcode(二)两数相加

    两数相加 题目描述 给出两个非空的链表用来表示两个非负的整数.其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字. 如果,我们将这两个数相加起来,则会返回一个新的链 ...

  9. 【LeetCode】两数相加

    题目描述 给出两个非空的链表用来表示两个非负的整数.其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储一位数字. 如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和. ...

  10. 两数之和,两数相加(leetcode)

    我们都知道算法是程序员成长重要的一环,怎么才能提高算法呢, 出来在网上看视频之外,动手练习是非常重要的.leetcode 就是一个非常好的锻炼平台. 1. 两数之和,在 leetcode 里面是属于 ...

随机推荐

  1. Serverless 架构模式及演进

    ​简介: Serverless 架构从使用技术上有计算,数据存储,消息通信,我们可从运维性,安全性,可靠性,可扩展性,成本几个角度来衡量架构的优劣.本文会介绍一些常见的业务场景,探讨如何使用 Serv ...

  2. 2018-2-13-win10-uwp-右击选择-GridViewItem-

    title author date CreateTime categories win10 uwp 右击选择 GridViewItem lindexi 2018-2-13 17:23:3 +0800 ...

  3. (数据科学学习手札160)使用miniforge代替miniconda

    本文已收录至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 大家好我是费老师,conda作为Python数据科学领域 ...

  4. RT-Thead的启动流程

    一.RT-Thread启动流程 由于RT-Thread文档中心已经将得很详细了,这里我就不过多描述,有需要的可以看RT-Thread 文档中心,启动流程如下图所示: 从图中可以看出RT-Thread是 ...

  5. 四:海思Hi3516CV500/Hi3516DV300

    Hi3516CV500 和 Hi3516DV300 均是海思推出的 IP Camera  SoC [System-on-a-Chip:SoC芯片是一种集成电路的芯片] 芯片. 针对海思 HI3516D ...

  6. String.split()遇到空字符串不解析的情况

    1.split的api说明 stringObj.split([separator,[limit]]) stringObj:要被分解的 String separator:字符串或正则表达式对象 limi ...

  7. Python 潮流周刊#50:我最喜欢的 Python 3.13 新特性!

    本周刊由 Python猫 出品,精心筛选国内外的 250+ 信息源,为你挑选最值得分享的文章.教程.开源项目.软件工具.播客和视频.热门话题等内容.愿景:帮助所有读者精进 Python 技术,并增长职 ...

  8. Delaunay三角剖分实现

    参考文章:https://www.cnblogs.com/zhiyishou/p/4430017.html 本文使用逐点插入法进行剖分,并使用Unity3D实现. 通过阅读文章<Triangul ...

  9. 智能运维|AIRIOT智慧光伏管理解决方案

    ​ 随着新能源发展到今天,我国的能源产业已经形成产业化规模化的发展,"光伏能源"被广泛应用于电力.农业.市政照明甚至是军事领域. 以光伏电站为例,大量铺设的太阳能板运维成本相当高, ...

  10. Hugging Face ZeroGPU 计划正式发布—提供价值一千万美元的免费共享 GPU

    在人工智能技术领域,GPU 资源一直是推动研究和应用的关键因素.然而,GPU 的成本和可用性对于许多研究人员和开发者来说却是一个显著的障碍. 在 Hugging Face,我们希望人工智能技术可以更加 ...