首页 > 其他分享 >2.两数相加

2.两数相加

时间:2025-01-10 18:44:46浏览次数:6  
标签:p2 p1 ListNode 相加 next let carry 两数

2.两数相加

class ListNode {
    constructor(val, next) {
        this.val = (val === undefined ? 0 : val)
        this.next = (next === undefined ? null : next)
    }
}
/**
 * @param {ListNode} l1
 * @param {ListNode} l2
 * @return {ListNode}
 */
var addTwoNumbers = function(l1, l2) {
    let p1=l1
    let p2=l2
    let arr=[]
    let carry=0 // 进位
    while(p1||p2){
        let current1=p1?p1.val:0
        let current2=p2?p2.val:0
        let sun=current1+current2+carry
        carry=Math.floor(sun/10)
        arr.push(sun%10)
        if(p1)p1=p1.next
        if(p2)p2=p2.next
    }
    if(carry)arr.push(carry)
    return buildLinkedList(arr)
};
// up time:6ms  space:56mb


// 4ms 56mb
var addTwoNumbersSimple = function(l1, l2) {
    let head = new ListNode(0)
    let p1=l1
    let p2=l2
    let p3=head
    let carry=0 // 进位
    while(p1||p2){
        let current1=p1?p1.val:0
        let current2=p2?p2.val:0
        let sun=current1+current2+carry
        carry=Math.floor(sun/10)
        p3.next=new ListNode(sun%10)
        if(p1)p1=p1.next
        if(p2)p2=p2.next
        p3=p3.next
    }
    // 处理最高位
    if(carry) p3.next=new ListNode(carry)
    return head.next
};

let a1 = [9,9,9,9,9,9,9], a2 = [9,9,9,9]
let l1= buildLinkedList(a1);
let l2= buildLinkedList(a2);
console.log(addTwoNumbers(l1, l2));

function buildLinkedList(arr) {
    let head = new ListNode(0);
    let p = head;
    for (let i = 0; i < arr.length; i++) {
        p.next = new ListNode(arr[i]);
        p = p.next;
    }
    return head.next;
}



'

标签:p2,p1,ListNode,相加,next,let,carry,两数
From: https://www.cnblogs.com/KooTeam/p/18664512

相关文章

  • 1两数之和
    这道题也是经典的越写越复杂,最开始不能通过[3,3],6。然后就写判断map1[target-nums[i]]!=map1[nums[i]].还是不能通过,然后换成multimap,换完之后也不行。然后去查怎么获得相同key的value,然后知道了equal.range()。最后终于也是写出来了,但是花了好长时间。classSolution{public:......
  • 链表实现多项式的相加相减以及修改指定指数系数
    #include<iostream>usingnamespacestd;//定义多项式节点结构typedefstructPolyNode{intcoaf;//系数intexpn;//指数structPolyNode*next;//指向下一个节点的指针}PolyNode,*Poly;//创建多项式节点PolycreateNode(intcoaf,inte......
  • 【NLP高频面题 - Transformer篇】Position encoding为什么选择相加而不是拼接呢?
    **【NLP高频面题-Transformer篇】Positionencoding为什么选择相加而不是拼接呢?**重要性:★首先明确:Transformer会对原始输入做嵌入(embedding),从而映射到需要的维度,可采用一个变换矩阵做矩阵乘积的方式来实现,Transformer中的positionembedding也是加在这个嵌入后......
  • 力扣1. 两数之和
    相信很多人和我一样(本人较......
  • LeetCode1.两数求和 C题解(简单)
    两数求和1.原题目题目示例2.思路解析3.具体操作1.原题目题目LeetCode题库的第1题题目为:给定一个整数数组nums和一个整数目标值target,请你在该数组中找出和为目标值target的那两个整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案,并且你不能使用两......
  • LeetCode-两数之和(001)
    一.题目描述给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案,并且你不能使用两次相同的元素。你可以按任意顺序返回答案。二.示例 示例1:输入:nu......
  • 写一个方法将一个未排序的数组中找出任意两数之和等于给定的数
    在前端开发中,你可以使用JavaScript来编写这个方法。以下是一个简单的示例,展示如何在未排序的数组中找出任意两数之和等于给定数的所有组合:functionfindPairsWithSum(arr,targetSum){constpairs=[];constcomplementMap=newMap();for(leti=0;i<ar......
  • 两数相加
    给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字0之外,这两个数都不会以0 开头。示例1:输入:l1=[2,4,3],l2=[5,6,4]输......
  • 基础 (map,pair的使用详解)/题目 两数之和 讲解 哈希表的使用
    力扣题目链接(opensnewwindow)https://leetcode.cn/problems/two-sum/给定一个整数数组nums 和一个目标值target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。示例:给......
  • 两数相加——链表
    题目链接思路链表的方式,模拟加法的计算过程,用一个变量保存进位信息即可。代码classSolution{public:ListNode*addTwoNumbers(ListNode*l1,ListNode*l2){//有一种办法可以节省空间,直接将结果放在l1或者l2上//但是这样就改变了原来的......