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 小时前
Jest 测试框架详解与实现指南
前端
counterxing4 小时前
我把 Codex 里的 Skills 做成了一个 MCP,还支持分享
前端·agent·ai编程
wangqiaowq4 小时前
windows下nginx的安装
linux·服务器·前端
之歆4 小时前
DAY_12JavaScript DOM 完全指南(二):实战与性能篇
开发语言·前端·javascript·ecmascript
发现一只大呆瓜5 小时前
Vite凭什么这么快?3分钟带你彻底搞懂 Vite 热更新的幕后黑手
前端·面试·vite
Maimai108085 小时前
React如何用 @microsoft/fetch-event-source 落地 SSE:比原生 EventSource 更灵活的实时推送方案
前端·javascript·react.js·microsoft·前端框架·reactjs·webassembly
candyTong5 小时前
Claude Code 的 Edit 工具是怎么工作的
javascript·后端·架构
kyriewen6 小时前
产品经理把PRD写成“天书”,我用AI半小时重写了一遍,他当场愣住
前端·ai编程·cursor
humcomm7 小时前
元框架的工作原理详解
前端·前端框架
canonical_entropy7 小时前
Attractor Before Harness: AI 大规模开发的方法论
前端·aigc·ai编程