前言
本文将介绍【链表】两数相加
对于这一问题将采用多种思路方法来解决
【暴力】【递归法】【迭代法】
一、问题引入,如何理解【链表】两数相加?
题目链接: [点击跳转] Leetcode 2. 两数相加
题目如下:

给出两个链表,两链表分别表示两个逆序整数,计算两整数之和,并输出所对应的逆序链表。
那么,根据题目,我们发现在代码实现时需要注意以下内容:
1.给出的两个链表为非空链表,但可能均只有一个节点0。
2.给出的两个链表的长度可能相同,也可能不同。
3.本题所给链表的节点数不超过100。
二、方法一(固定数组暴力)
对于本题而言,我们将其逻辑理解为:将两链表所表示的数,加和,然后输出为链表。
因此,我们可以考虑如何将两链表里各个节点的元素取出,并按逆序排列成真正的数。
如下:
class Solution {
public:
ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
ListNode* tre=new ListNode(0);
int a[100]={
0};
int b[100]={
0};
ListNode* pre=tre;
if(l1==nullptr&&l2==nullptr){
return nullptr;
}
for(int i=0;l1!=nullptr;i++){
a[i]=l1->val;
l1=l1->next;
}
for(int j=0;l2!=nullptr;j++){
b[j]=l2->val;
l2=l2->next;
}
}
};
在这一步中,我们成功地将链表里的数导入到数组中。
(这里我们直接定义的是固定数组,因为我们提前已知了节点数的范围不会超过100。)
接下来,我们需要实现两数相加。
class Solution {
public:
ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
vector<int> sum;//计算加和
int a[100]={
0};
int b[100]={
0

最低0.47元/天 解锁文章
1806

被折叠的 条评论
为什么被折叠?



