首页 > 其他分享 >2. 两数相加 ----- 链表末尾赋值0,模拟

2. 两数相加 ----- 链表末尾赋值0,模拟

时间:2022-11-16 21:13:02浏览次数:45  
标签:ListNode int next 链表 l2 l1 ----- 赋值

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

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

你可以假设除了数字 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.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
        int len1=1;//记录l1的长度
        int len2=1;//记录l2的长度
        ListNode* p=l1;
        ListNode* q=l2;
        while(p->next!=NULL)//获取l1的长度
        {
            len1++;
            p=p->next;
        }
        while(q->next!=NULL)//获取l2的长度
        {
            len2++;
            q=q->next;
        }
        if(len1>len2)//l1较长,在l2末尾补零
        {
            for(int i=1;i<=len1-len2;i++)
            {
                q->next=new ListNode(0);
                q=q->next;
            }
        }
        else//l2较长,在l1末尾补零
        {
            for(int i=1;i<=len2-len1;i++)
            {
                p->next=new ListNode(0);
                p=p->next;
            }
        }
        p=l1;
        q=l2;
        bool count=false;//记录进位
        ListNode* l3=new ListNode(-1);//存放结果的链表
        ListNode* w=l3;//l3的移动指针
        int i=0;//记录相加结果
        while(p!=NULL&&q!=NULL)
        {
            i=count+p->val+q->val;
            w->next=new ListNode(i%10);
            count=i>=10?true:false;
            w=w->next;
            p=p->next;
            q=q->next;
        }
        if(count)//若最后还有进位
        {
            w->next=new ListNode(1);
            w=w->next;
        }
        return l3->next; 
    }
};

链表末尾补0,即加0结点

 

标签:ListNode,int,next,链表,l2,l1,-----,赋值
From: https://www.cnblogs.com/slowlydance2me/p/16897511.html

相关文章

  • 问题记录-前端开发避坑(7)--vue 原生h5开发及基础组件开发
    问题1问题描述与分析执行vueRouter的编程式导航时,报错:vuerouterTypeError:onCompleteisnotafunction检查发现是参数格式不对。这里使用了对象语法,而我错把qu......
  • 报错--RuntimeError: Too many open files. Communication with the workers is no lo
    问题描述pytorch 的dataloader在读取数据时,设置了较大的batchsize和num_workers.然后训练一段时间报错:RuntimeError:Toomanyopenfiles.Communicationwith......
  • Docker-compose 安装 Nginx PHP MySQL
    1、创建mkdir-p/docker/wwwmkdir-p/docker/nginx/conf.d/2、配置vimnginx/conf.d/default.confserver{listen80;server_namelocalhost;location/{......
  • Centos 7 安装 docker-compose
    1、下载curl-Lhttps://github.com/docker/compose/releases\/download/1.21.2/docker-compose-`uname-s`-`uname-m`-o/usr/local/bin/docker-compose可能上面的下载比......
  • Ansible-Playbook
    playbooks是一个不同于使用Ansible命令行执行方式的模式,其功能更强大灵活。简单来说,playbook是一个非常简单的配置管理和多主机部署系统,不同于任何已经存在的模式,可作为一......
  • Javascript(笔记39) - ES6特性 - 集合Set
    SETES6 提供了新的数据结构set(集合)。集合类似于数组,但成员的值都是唯一的,集合实现iterator 接口,所以可以使用“扩展运算符”和“for...of”进行遍历,集合的属性和方法......
  • 2022-11-16学习内容
    1.案例-购物车-购物车列表展示1.1item_cart.xml<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"......
  • MyBatis - 基础学习4 - xml的核心配文件(优化)
    一.别名类型别名可为Java类型设置一个缩写名字。它仅用于XML配置,意在降低冗余的全限定类名书写1.利用typealiases来实现<typeAliases><typeAliasty......
  • SP11469 SUBSET - Balanced Cow Subsets Sol
    考虑枚举\(3^n\)种情况,用三进制数表示。对于每一位,\(0\)表示不放,\(1\)表示放入第一个集合,\(2\)表示放入第二个集合。这样显然会TLE。考虑meetinthemiddle。考......
  • day27 -选择器完
    层次选择器选择全部*p{}所有该属性标签都会改变样式 1p{2background:#15f50c;3} 后代选择器选择某一项的后代所有的该元素都改变样式 1后代选......