当前位置: 首页 > article >正文

2. 两数相加

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

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

你可以假设除了数字 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
  • 题目数据保证列表表示的数字不含前导零

 

 ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {

        ListNode*list1=l1;

        ListNode*list2=l2;

        int wei=0;

         ListNode*head=nullptr;

         ListNode*list3=nullptr;

         while(list1 !=nullptr && list2!=nullptr)

        {

            int tmp = list1->val+list2->val + wei;

            wei=0;

            if(tmp>=10)

            {

                wei=tmp/10;

                tmp=tmp%10;

            }

           ListNode*node = new  ListNode(tmp);

           if(head==nullptr)

           {

               head=node;

               list3=head;

           }

           else

           {

               list3->next=node;

               list3=list3->next;

           }

            list1=list1->next;

            list2=list2->next;

        }

        while(list1 !=nullptr)

        {

            int tmp = list1->val+ wei;

            wei=0;

            if(tmp>=10)

            {

                wei=1;

                tmp=tmp%10;

            }

           ListNode*node = new  ListNode(tmp);

           if(head==nullptr)

           {

               head=node;

               ListNode*list3=head;

           }

           else

           {

               list3->next=node;

               list3=list3->next;

           }

           list1=list1->next;

        }

         while(list2 !=nullptr)

        {

            int tmp = list2->val+ wei;

            wei=0;

            if(tmp>=10)

            {

                wei=1;

                tmp=tmp%10;

            }

           ListNode*node = new  ListNode(tmp);

           if(head==nullptr)

           {

               head=node;

               ListNode*list3=head;

           }

           else

           {

               list3->next=node;

               list3=list3->next;

           }

           list2=list2->next;

        }

        if(wei!=0)

        {

              ListNode*node = new  ListNode(wei);

               list3->next=node;

               list3=list3->next;

        }

        //ListNode*list4= reverseList(head);    

         return head;

    }


http://www.kler.cn/a/149212.html

相关文章:

  • 卷积神经网络之Yolo详解
  • 【计算机网络】UDP网络程序
  • ubuntu20.04 解决Pytorch默认安装CPU版本的问题
  • sql server 查看io资源使用
  • MySQL重难点(一)索引
  • 网站小程序app怎么查有没有备案?
  • fastadmin学习笔记-----下拉框联动
  • 聊聊clickhouse分布式表的操作
  • 【JMeter】配置元件
  • git rebase冲突说明(base\remote\local概念说明)
  • C#多线程创建及线程的同步
  • 怎么安装php扩展
  • 【SpringCloud】微服务架构设计模式
  • 029 - STM32学习笔记 - ADC(三) 独立模式单通道DMA采集
  • 函数调用的形式写一个动态监控secure日志文件的sh脚本、过滤出secure日志异常用户名的ip并用iptables限制
  • Java基础之原码,反码,补码,位运算符
  • IDEA2023版本创建Sping项目只能勾选17和21,却无法使用Java8?(已解决)
  • Java设计模式系列:单例设计模式
  • 爬虫中XPath语法四个重要概念及示例
  • 【vue】v-model在表单元素上的应用
  • 代码随想录-刷题第十一天
  • CSS-常见元素显示模式总结
  • [Android]常见的数据传递方式
  • Spark---资源、任务调度
  • 【Linux下基本指令——(1)】
  • 【C 语言经典100例】C 练习实例13 - 水仙花数