leetcode2两数之和

2024-06-19 13:35:58 浏览数 (2)

LC2

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

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

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

代码语言:javascript复制
 输入:l1 = [2,4,3], l2 = [5,6,4]
 输出:[7,0,8]
 解释:342   465 = 807.
代码语言:javascript复制
 /**
  * Definition for singly-linked list.
  * struct ListNode {
  *     int val;
  *     ListNode *next;
  *     ListNode() : val(0), next(nullptr) {}
  *     ListNode(int x) : val(x), next(nullptr) {}
  *     ListNode(int x, ListNode *next) : val(x), next(next) {}
  * };
  */
 class Solution {
 public:
     ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
         ListNode*dummy=new ListNode();
         ListNode*cur=dummy;//用dummy作哨兵节点head=dummy->next
         int carry=0;
         while(l1||l2||carry){
             carry =(l1?l1->val:0) (l2?l2->val:0);//(l1?l1->val:0)当l1=nullptr很好的避免了空节点的干扰
             cur=cur->next=new ListNode(carry);//精简代码相当于
             //cur=cur->next;cur=new ListNode(carry);
             carry/=10;
             if(l1)l1=l1->next;
             if(l2)l2=l2->next;
         }
         return dummy->next;
     }
 };

0 人点赞