0
点赞
收藏
分享

微信扫一扫

C++泛型编程:模版

给定两个用链表表示的整数,每个节点包含一个数位。

这些数位是反向存放的,也就是个位排在链表首部。

编写函数对这两个整数求和,并用链表形式返回结果。

示例:

输入:(7 -> 1 -> 6) + (5 -> 9 -> 2),即617 + 295
输出:2 -> 1 -> 9,即912

示例:

输入:(6 -> 1 -> 7) + (2 -> 9 -> 5),即617 + 295
输出:9 -> 1 -> 2,即912

直接计算求和,用一个变量存储进位,就可以算出链表的和

leetcode代码


class Solution {  
public:  
    ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {  
        ListNode* dummy = new ListNode(0); // 创建一个哑节点作为结果链表的头部  
        ListNode* current = dummy; // 当前节点指针,用于构建结果链表  
        int carry = 0; // 进位  
  
        while (l1 != nullptr || l2 != nullptr || carry != 0) {  
            int sum = carry; // 当前位的和,初始化为进位值  
            if (l1 != nullptr) {  
                sum += l1->val;  
                l1 = l1->next;  
            }  
            if (l2 != nullptr) {  
                sum += l2->val;  
                l2 = l2->next;  
            }  
            carry = sum / 10; // 更新进位  
            current->next = new ListNode(sum % 10); // 创建新节点存储当前位的值  
            current = current->next; // 移动到下一个节点  
        }  
  
        return dummy->next; // 返回哑节点的下一个节点作为结果链表的头  
    }  
};
举报

相关推荐

0 条评论