HOT100——两数相加(JS实现)

简介: HOT100——两数相加(JS实现)

题目描述

image.png

image.png



解题思路

  • 本次使用暴力解法:
  1. 拿到链表对应的字符字符串数值,然后将数值反转之后转为BigInt类型,之所以转为BigInt类型的原因在于后期测试用例中有大数形式。
  2. 将两个数值相加,然后转为字符数组,然后反转。
  3. 定义一个数组,将字符数组的每一个元素变为相应节点后,添加进数组。
  4. 遍历这个临时数组,依次改变指针。
  5. 返回数组的头元素即可。

手绘思路

image.png

解题代码

var addTwoNumbers = function(l1, l2) {
    function ListNode(val,next) {
        this.val = val;
        this.next = null;
    }
    // 拿到链表1的数值
    let str1 = '';
    let temp1 = l1;
    while (temp1 !== null) {
        str1 = str1 + temp1.val;
        temp1 = temp1.next;
    }
    str1 = str1.split('').reverse().join('');
    let num1 = BigInt(str1);
    // 拿到链表2的数值
    let str2 = '';
    let temp2 = l2;
    while (temp2 !== null) {
        str2 = str2 + temp2.val;
        temp2 = temp2.next;
    }
    str2 = str2.split('').reverse().join('');
    let num2 = BigInt(str2);
    let result = num1 + num2;
    // 以result为基础倒着建立一个链表
    let strResult = String(result).split('');
    strResult.reverse();
    let res = [];
    for (let v of strResult) {
        res.push(new ListNode(Number(v)))
    };
    for (let i = 0 ; i < res.length - 1;i++) {
        res[i].next = res[i+1]
    }
    return res[0]
};

总结(本题给我们的启示思路)

  • 本题不是最优解,但是思路较为简单。
  • 学会使用JS中的BigInt类型来解决大数问题。
  • 学会使用遍历数组来改变节点指针的方法。
相关文章
|
JavaScript 前端开发
javascript深拷贝和浅拷贝以及实现方法(推荐)
javascript深拷贝和浅拷贝以及实现方法(推荐)
600 0
javascript深拷贝和浅拷贝以及实现方法(推荐)
|
JavaScript 算法 前端开发
【前端算法】JS实现数字千分位格式化
JS实现数字千分位格式化的几种思路,以及它们之间的性能比较
342 1
|
存储 前端开发 算法
一行代码解决LeetCode实现 strStr()使用JavaScript解题|前端学算法
一行代码解决LeetCode实现 strStr()使用JavaScript解题|前端学算法
162 0
一行代码解决LeetCode实现 strStr()使用JavaScript解题|前端学算法
|
存储 机器学习/深度学习 JavaScript
JS 你最少用几行代码实现深拷贝?
JS 你最少用几行代码实现深拷贝?
JS 你最少用几行代码实现深拷贝?
|
JavaScript 前端开发 算法
JavaScript实现一段时间之后关闭广告
简介:通过JavaScript实现在一段时间之后,广告消失。
130 0
JavaScript实现一段时间之后关闭广告
|
JavaScript 前端开发 算法
JS实现鼠标悬停变色
本文实现的是利用JS实现当鼠标悬停在表格上的时候,表格发生变色。 CSS渲染 JS逻辑 `
219 0
JS实现鼠标悬停变色
|
JavaScript 前端开发 数据安全/隐私保护
JS实现关闭图片窗口
通过事件的绑定来实现,关闭二维码的效果。
159 0
JS实现关闭图片窗口
|
前端开发 JavaScript Windows
js实现body背景图自动扩缩 光靠css几乎无法实现这样的效果
js实现body背景图自动扩缩 光靠css几乎无法实现这样的效果
196 0
js实现body背景图自动扩缩 光靠css几乎无法实现这样的效果
|
存储 JavaScript
js实现多选、全选、反选、取消选择(篇一)
js实现多选、全选、反选、取消选择(篇一)
389 0
js实现多选、全选、反选、取消选择(篇一)
|
JavaScript 前端开发
利用JavaScript实现二级联动
利用JavaScript实现二级联动 要实现JavaScript二级联动效果,首先要确定需要哪些技术: 二维数组 for in循环 new Option(text,value,true,true) add(option,null) onchange() 表单事件 HTML代码: &lt;!-- &lt;input type=&quot;text&quot; id=&quot;text&quot;&gt; --&gt; 请选择省份: &lt;select name=&quot;&quot; id=&quot;provinces&quot;&gt; &lt;!-- &lt;option value=&quot;江苏省&quot;&gt;江苏省&lt;/option&gt;