两数相加 js

news2024/11/26 20:26:04

道阻且长,行而不辍,未来可期

两数相加

给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。

请你将两个数相加,并以相同形式返回一个表示和的链表。
输入:l1 = [2,4,3], l2 = [5,6,4]
输出:[7,0,8]
解释:342 + 465 = 807.
示例 2:
输入:l1 = [0], l2 = [0]
输出:[0]
示例 3:
输入:l1 = [9,9,9,9,9,9,9], l2 = [9,9,9,9]
输出:[8,9,9,9,0,0,0,1]
你可以假设除了数字 0 之外,这两个数都不会以 0 开头。

2–>4–>3
5–>6–>4

2+5
4+6 逢十进一
3+4 +1

第一次读力扣的题意的时候,读完我的第一反应是把 链表转成数组–>字符串–数字 相加。
把结果转成数组–>数组转成链表。
bug [1,2,3,4,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]
超过2**64就出问题了。

 const l1={
    val: 2,
    next:  {
      val: 4,
      next: {
        val: 3,
        next: null
      }
    }
  }

  const l2={
    val: 5,
    next:  {
      val: 6,
      next: {
        val: 4,
        next: null
      }
    }
  }
  
  var addTwoNumbers2 = function (l1, l2) {
  let addOne = 0;//逢十进一,用于存储进位
  let head = null;//链表头
  let savePreNode = null;//存储前一个节点的值
  while (l1 || l2) {
    let v1 = l1.val !== null ? l1.val : 0;
    let v2 = l2.val !== null ? l2.val : 0;
    let result = v1 + v2 + addOne;
    addOne = result >= 10 ? 1 : 0;

    if (!head) {
      head = { val: addOne > 0 ? result % 10 : result, next: null };
      savePreNode = head;
    } else {
      const node = { val: addOne > 0 ? result % 10 : result, next: null };
      savePreNode.next = node;
      savePreNode = node;
    }
   if(l1) l1 = l1.next;
   if(l2) l2 = l2.next;
  }
  return head;
}

console.log(addTwoNumbers2(l1, l2));
//{ val: 7, next: { val: 0, next: { val: 8, next: null } } }

在这里插入图片描述

 function ListNode(val, next) {
      this.val = (val===undefined ? 0 : val)
      this.next = (next===undefined ? null : next)
  }

  const addTwoNumbers3=function(l1, l2){
    let head=null;
    let preNode=null;

    let addOne=0;//逢十进一,存储进位

    while(l1 || l2){
      let v1 =l1.next ? l1.val :0;
      let v2 =l2.next ? l2.val :0;
      let res=v1+v2+addOne;
      addOne=res>=10?1:0;

      if(!head){
        head=new ListNode(addOne>0?res%10:res);
        preNode=head;
      }else{
        const node=new ListNode(addOne>0?res%10:res);
        preNode.next=node;
        preNode=node;
      }

      if(l1) l1=l1.next;
      if(l2) l2=l2.next;
    }
    return head
  }

  console.log(addTwoNumbers3(l1,l2));
  
  //打印结果
  ListNode {
  val: 7,
  next: ListNode { val: 0, next: ListNode { val: 1, next: null } }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1190647.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[Matlab]基于LSTM+NSGA2的风光火力发电策略优化

最近比较忙,好久没分享案例啦,今天简单分享一个滚动时域的多目标优化 一 模型介绍 1 风电 2 光伏 3 火电 4 储能 5 用电需求 等五个对象。 其中风电和光伏还有用电需求,用历史数据LSTM网络,训练一个预测模型;火电根据策…

Linux系统编程——文件的打开及创建

打开(open) 使用open函数需要包含以下三个头文件&#xff1a; #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> open的函数定义格式 int open(const char *pathname,int flags); int open(const char *pathname,int flags,mode_t mode…

一篇带你精通php

华子目录 什么是phpphp发展史平台支持和数据库支持网站静态网站和动态网站的区别静态网站动态网站的特点 关键名词解析服务器概念IP的概念域名DNS端口 web程序的访问流程静态网站访问流程动态网站访问流程 php标记脚本标记标准标记&#xff08;常用&#xff09; php注释 什么是…

PDF有限制密码,不能复制怎么办?

大家现在接触PDF文件越来越多&#xff0c;有的时候在网上下载的PDF文件打开之后&#xff0c;发现选中文字之后无法复制。甚至其他功能也都无法使用&#xff0c;这是怎么回事&#xff1f;该怎么办&#xff1f; 当我们发现文件打开之后&#xff0c;编辑功能无法使用&#xff0c;很…

代码审计(某个人发卡系统V6.0(php))

一、前台漏洞 1、前台文件包含漏洞(如果开启了gbc,可远程包含) 注入点1&#xff1a; tyid没任何过滤&#xff0c;存在注入 payload:http://faka.com/ajax.php?actselgo POST传参: tyid1/**/union/**/select/**/*/**/from/**/if_km/**/limit/**/0,1# 注入点2: 也是没加任何…

10-Docker-分布式存储算法

01-哈希取余算法分区 哈希取余分区&#xff08;Hash Modulus Partitioning&#xff09;是一种在分布式计算和数据存储中常用的分区策略&#xff0c;其目的是将数据或计算任务分配到多个节点或服务器上&#xff0c;以实现负载均衡和提高性能。这种分区策略的核心思想是使用哈希…

Python---列表的循环遍历,嵌套

循环遍历就是使用while或for循环对列表中的每个数据进行打印输出 while循环&#xff1a; list1 [貂蝉, 大乔, 小乔]# 定义计数器 i 0 # 编写循环条件 while i < len(list1):print(list1[i])# 更新计数器i 1 for循环&#xff08;推荐&#xff09;&#xff1a; list1 [貂…

小白学安全-KunLun-M静态白盒扫描工具

一、KunLun-M简介 KunLun-M是一个完全开源的静态白盒扫描工具&#xff0c;支持PHP、JavaScript的语义扫描&#xff0c;基础安全、组件安全扫描&#xff0c;Chrome Ext\Solidity的基础扫描。开源地址&#xff1a;https://github.com/LoRexxar/Kunlun-M Cobra是一款源代码安全审计…

springboot中定时任务cron不生效,fixedRate指定间隔失效,只执行一次的问题

在调试计算任务的时候&#xff0c;手动重置任务为初始状态&#xff0c;但是并没有重新开始计算&#xff0c;检查定时任务代码&#xff1a; 从Scheduled(fixedRate 120000)可以看到&#xff0c;应该是间隔120秒执行一次该定时任务&#xff0c;查看后台日志&#xff0c;并没有重…

追寻Moonbeam身影,泰国区块链周正在火热进行中!

继Moonbeam参与HK Web3月之后&#xff0c;下一站便是由Cryptomind Group举办的泰国2023年区块链周。本次位于泰国的区块链周以“熊市中建设&#xff0c;牛市中崛起”为理念&#xff0c;旨在为对区块链技术感兴趣的个人和投资者提供机会接触行业中的团队和专家&#xff0c;并邀请…

跨境虾皮Shopee和Lazada商品详情接口采集方案

跨境虾皮和Lazada商品详情接口采集方案可以采用以下步骤&#xff1a; 了解接口文档&#xff1a;首先需要了解跨境虾皮和Lazada的商品详情接口文档&#xff0c;包括接口地址、请求参数、返回结果等信息。获取API密钥&#xff1a;为了使用API接口&#xff0c;需要获取跨境虾皮和…

五个做原型的好处和意义

绘制原型不仅是产品开发的重要基础&#xff0c;也是UI设计师在设计过程中应该采用的主要路径标识。绘制原型的重要性不亚于建筑师手中的设计图纸&#xff01;虽然原型设计可能会给产品开发带来一些误解&#xff0c;但毫不夸张地说&#xff0c;任何开发人员都可以将优秀的开发产…

将Modbus转Profinet网关用于自动给料机的案例

自动给料机通过使用Modbus转Profinet网关&#xff08;XD-MDPN100&#xff09;连接1200PLC与G120变频器Modbus通信。这种通信方式可以实现设备之间的数据交换和控制命令传输&#xff0c;大大提高了自动给料机的运行效率和精度。使用这个网关&#xff0c;1200PLC可以准确地将控制…

13 # 手写 concat 方法

concat 的使用 concat() 方法用于合并两个或多个数组。此方法不会更改现有数组&#xff0c;而是返回一个新数组。如果省略了所有参数&#xff0c;则 concat 会返回调用此方法的现存数组的一个浅拷贝。 <script>var arr1 ["k", "a", "i"…

ES|QL(Elasticsearch 查询语言)入门

作者&#xff1a;Ninoslav Miskovic 通过使用 ES|QL 直接从 Discover 创建聚合、可视化和警报&#xff0c;缩短获得见解的时间。 什么是 ES|QL&#xff08;Elasticsearch 查询语言&#xff09;&#xff1f; ES|QL&#xff08;Elasticsearch 查询语言&#xff09;是 Elastic 全…

文件包含 [ZJCTF 2019]NiZhuanSiWei1

打开题目 代码审计 if(isset($text)&&(file_get_contents($text,r)"welcome to the zjctf")){ 首先isset函数检查text参数是否存在且不为空 用file_get_contents函数读取text制定的文件内容并与welcome to the zjctf进行强比较 echo "<br><h…

ByteBuf和ByteBuffer

一、背景简介 ByteBuf&#xff0c;顾名思义&#xff0c;就是字节缓冲区&#xff0c;是Netty中非常重要的一个组件。熟悉jdk NIO的同学应该知道ByteBuffer&#xff0c;正是因为jdk原生ByteBuffer使用比较复杂&#xff0c;某些场景下性能不是太好&#xff0c;netty开发团队重新设…

QT QSplitter

分裂器QSplitter类提供了一个分裂器部件。和QBoxLayout类似&#xff0c;可以完成布局管理器的功能,但是包含在它里面的部件,默认是可以随着分裂器的大小变化而变化的。 比如一个按钮放在布局管理器中,它的垂直方向默认是不会被拉伸的,但是放到分裂器中就可以被拉伸。还有一点不…

多篇论文介绍-摘要

论文地址https://arxiv.org/pdf/2301.10051.pdf 目录 01CIEFRNet&#xff1a;面向高速公路的抛洒物检测算法 02改进 YOLOv5 的 PDC 钻头复合片缺损识别 03 基于SimAM注意力机制的DCN-YOLOv5水下目标检测 04 基于改进YOLOv7-tiny 算法的输电线路螺栓缺销检测 ​编辑05 基于改进Y…

jquery的项目,html页面使用vue3 +element Plus

vue3&#xff0c;element引入 <script src"../vue3.3.8/vue.global.js"></script> <link rel"stylesheet" href"js/elementPlus/index.css"> <script src"js/elementPlus/index.full.js"></script>…