Leetcode 2.两数相加 JavaScript (Day 11)

js一刷自解暴力

javascript 复制代码
var addTwoNumbers = function(l1, l2) {
    let p1=l1,p2=l2,m=0;
    let  bummy=new ListNode();
    let cur=bummy
    while(p1&&p2){
        let node=new ListNode();
        let value=p1.val+p2.val+m;
        m=0;
        if(value>=10){
            m = Math.floor(value / 10);
            value=value%10;
        }
        node.val=value;
        cur.next=node;
        cur=node;
        p1=p1.next;
        p2=p2.next;
    }
    while(p1){
        let node=new ListNode();
        let value=p1.val+m;
        m=0;
        if(value<10){
            node.val=value;
            node.next=p1.next;
            cur.next=node;
            break;
        } 
        else{
            m = Math.floor(value / 10);
            value=value%10;
            node.val=value;
            cur.next=node;
            cur=node;
            p1=p1.next;
        }  
    }
    while(p2){
        let node=new ListNode();
        let value=p2.val+m;
        m=0;
        if(value<10){
            node.val=value;
            node.next=p2.next;
            cur.next=node;
            break;
        } 
        else{
            m = Math.floor(value / 10);
            value=value%10;
            node.val=value;
            cur.next=node;
            cur=node;
            p2=p2.next;
        }  
    }
    if(m){
        let node=new ListNode();
        node.val=m;
        cur.next=node;
    }
    return bummy.next;
    
};

js一刷优化

javascript 复制代码
var addTwoNumbers = function(l1, l2) {
    let dummy = new ListNode(0);
    let cur = dummy;
    let m = 0;
    while(l1||l2||m){
        if(l1){
            m+=l1.val;
            l1=l1.next;
        }
        if(l2){
            m+=l2.val;
            l2=l2.next;
        }
        cur.next=new ListNode(m%10);
        m=Math.floor(m/10);
        cur=cur.next;
    }
    return dummy.next;
  
};

js一刷 递归

javascript 复制代码
var addTwoNumbers = function(l1, l2,m=0) {
        if(l1===null&&l2===null&&m===0){
            return null;
        }
        let sum=m;
        if(l1){
            sum+=l1.val;
            l1=l1.next;
        }
        if(l2){
            sum+=l2.val;
            l2=l2.next;
        }
       
    
    return new ListNode(sum%10,addTwoNumbers(l1,l2,Math.floor(sum/10)));
  
};
相关推荐
代码游侠3 小时前
应用——Web服务器项目代码解析
运维·服务器·开发语言·前端·笔记·html
C_心欲无痕4 小时前
网络相关 - 常用命令详解Telnet、Ping 及其他实用工具
前端·网络
JarvanMo4 小时前
没有人比我更懂Flutter第三方依赖鸿蒙化了之Sqflite
前端
橘颂TA4 小时前
【剑斩OFFER】算法的暴力美学——两数之和
数据结构·算法·leetcode·力扣·结构与算法
子洋4 小时前
AI Agent 设计模式 - PlanAndExecute 模式
前端·人工智能·后端
云里雾里!4 小时前
力扣 268. 缺失数字 ✅ 【位运算(异或)最优解法】深度解析
算法·leetcode
梭七y5 小时前
【力扣hot100题】(122)回文链表
算法·leetcode·链表
web小白成长日记5 小时前
自定义 Hooks 的用法和意义详解(结合案例)
前端·css·面试·职场和发展·前端框架
小鸡脚来咯5 小时前
前端传输的数据格式的选择
java·开发语言·前端·后端
小二·5 小时前
【万字源码级剖析】深入理解 Vue 3 响应式系统:ref、reactive、computed 与 effect 的底层实现
前端·javascript·vue.js