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

链表-2. 两数相加

时间:2022-10-01 11:22:23浏览次数:77  
标签:cur val 相加 next 链表 node1 node2

之前没有做过链表,这题我一提交就报错,后面发现需要用链表这种数据结构返回

在网上查了下链表的概念,做完了它

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

请你将两个数相加,并以相同形式返回一个表示和的链表。

你可以假设除了数字 0 之外,这两个数都不会以 0 开头。

 

示例 1:


输入: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]
 

提示:

每个链表中的节点数在范围 [1, 100] 内
0 <= Node.val <= 9
题目数据保证列表表示的数字不含前导零

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/add-two-numbers
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

 

/**
 * Definition for singly-linked list.
 * function ListNode(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) {
    const head=new ListNode(0)
    let cur=head;
    let node1=l1
    let node2=l2
    while(node1||node2){
        let num=cur.val
        if(node1){
            num=num+node1.val
        }
        if(node2){
            num=num+node2.val
        }
        if(num>=10){
            cur.val=num-10
            cur.next=new ListNode(1)
            cur=cur.next
        }else{
            cur.val=num
            if(node1&&node1.next||node2&&node2.next){
                cur.next=new ListNode(0)
                cur=cur.next
            }
        }
        if(node1){
            node1=node1.next
        }
        if(node2){
            node2=node2.next
        }
    }
    return head
};

 

标签:cur,val,相加,next,链表,node1,node2
From: https://www.cnblogs.com/caoke/p/16746953.html

相关文章

  • 【code基础】链表问题总结
    数组和链表的区别数组:所有元素都连续的存储于一段内存中,且每个元素占用的内存大小相同。数组具备了通过下标快速访问数据的能力增加数组容量需要先申请一块新的内存,......
  • LeetCode160 相交链表
       idea:比较相同信息,首先想到用嵌套for循环解决,方法比较简单,不过时间复杂度高 /** * Definition for singly-linked list. * struct ListNode { *......
  • LeetCode 206 反转链表
    给你单链表的头节点head,请你反转链表,并返回反转后的链表。 示例1:输入:head=[1,2,3,4,5]输出:[5,4,3,2,1]示例2:输入:head=[1,2]输出:[2,1]示例3:输入:head=[]输出......
  • 代码随想录day7 ● 454.四数相加II ● 383. 赎金信 ● 15. 三数之和 ● 18. 四
    454.四数相加II暴力解法(超出时间限制):1classSolution{2public:3intfourSumCount(vector<int>&nums1,vector<int>&nums2,vector<int>&nums3,vecto......
  • 【c语言编程基础】结构体单向链表的基本操作
    前言 关注点 code#include<stdio.h>#include<stdlib.h>#include<string.h>//strcat#defineSize4typedefstructTable{intlen;intsize;......
  • android面试题--单链表反转
     //定义链表类classNode{intdata;Nodenext;}voidmain(){//第一步:新建链表Nodefive=newNod......
  • 反转链表
    题目:给定单链表的头节点 head ,请反转链表,并返回反转后的链表的头节点。  定义链表结构:  publicclassListNode{intval;ListNodenext;Lis......
  • leetcode链表1-6
    目录leetcode链表1.删除链表中的节点2.删除链表中倒数第n个节点3.反转链表4.合并两个有序链表5.判断回文链表6.判断是否为环形链表leetcode链表1.删除链表中的节点题目:......
  • 单链表注意事项
    经常采用的方法有头插法、尾插法、逆置法、归并法、双指针法等,对具体问题需要灵活变通;对于顺序表,由于可以直接存取,经常结合排序和查找的几种算法设计思路进行设计,如归并排......
  • 循环链表(约瑟夫环)思路及实现
    循环链表单链表的尾节点指向首节点,即可构成循环链表约瑟夫环约瑟夫问题:有N个人围成一圈,每个人都有一个编号,编号由入圈的顺序决定,第一个入圈的人编号为1,最后一个为N......