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 天前
jev-ultrafast 深度解析:7 秒订机票的浏览器 Agent 是如何炼成的
前端·后端·agent
子兮曰3 天前
Jev 爆发一周:7 秒 Agent 背后的 System One 生态与三场争议
前端·后端·ai编程
前端小万3 天前
写公众号赚了 3000 块后,我做了一款叫 "一键成稿" 的软件
前端·微信小程序
爱勇宝3 天前
ZCode 开源 24 小时:一份没有历史的账本,回答不了"有没有偷代码"
前端·后端·chatglm (智谱)
三十而立洋3 天前
Cookie 详解:从产生到安全,一次讲透
前端·javascript
卡布鲁3 天前
把一个 Vite + Vue3 应用塞进 qiankun (React + Umi3) 主站:十个坑的复盘
前端·javascript·react.js
李少兄3 天前
JavaScript 隐式全局变量解析
javascript
旖旎夜光3 天前
力控面试题 01.01: 判定字符是否唯一(位运算) —— 题解
c++·学习·算法·leetcode·力控
汉堡大王95273 天前
Jev:不是聊天机器人, 而是一个智能 if 语句
前端·人工智能·后端
梦想很大很大3 天前
从运行事实到回归证据:Workrun 的 Telemetry 与 Evaluation 实践
前端·人工智能·后端