力扣 题目2- 两数相加

无聊的阿库娅·2022-08-02 16:57·19 次阅读

力扣 题目2- 两数相加

题目

题解

同时向后遍历 用一个参数做进位 长度不够进行补0

代码

复制代码
 1 #include<iostream>
 2 #include<vector>
 3 using namespace std;
 4 struct ListNode {
 5     int val;
 6     ListNode* next;
 7     ListNode() : val(0), next(nullptr) {}
 8     ListNode(int x) : val(x), next(nullptr) {}
 9     ListNode(int x, ListNode* next) : val(x), next(next) {}
10 };
11 
12 int loop(ListNode* &l1, ListNode* &l2, ListNode*& result,int back) {
13     result->val = (l1->val + l2->val+back) % 10;
14     back = (l1->val + l2->val + back) / 10;
15     //如果l1与l2不同时为空 或者 back>0(进位)
16     if ((l1->next != nullptr || l2->next != nullptr) || back > 0) {
17         result->next = new ListNode(back);
18         result = result->next;
19     }
20 
21     //如果下一个都不为空
22     if (l1->next != nullptr && l2->next != nullptr) {
23         loop(l1->next, l2->next, result, back);
24     }
25     //如果l1下一个为空则l1补0
26     else if(l1->next == nullptr&& l2->next != nullptr)
27     {
28         l1->next = new ListNode(0);
29         loop(l1->next, l2->next, result, back);
30     }
31     //如果l2下一个为空则l2补0
32     else if (l1->next != nullptr&& l2->next == nullptr)
33     {
34         l2->next = new ListNode(0);
35         loop(l1->next, l2->next, result, back);
36     }
37     return 0;
38 }
39 
40 class Solution {
41 public:
42     ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
43         ListNode* result1 = new ListNode(0);
44         ListNode* result= result1;
45         loop(l1, l2, result1,0);
46         return result;
47     }
48 };
49 
50 
51 void listnum(ListNode& list, vector<int>& vectorlist) {
52     ListNode* headlist = &list;
53     for (int i = 0; i < vectorlist.size(); i++) {
54         ListNode* p;
55         p = (struct ListNode*)malloc(sizeof(struct ListNode*));
56         p->val = vectorlist[i];
57         headlist->next = p;
58         headlist = headlist->next;
59     }
60     headlist->next = NULL;
61 }
62 
63 
64 int main() {
65     Solution sol;
66     ListNode list1(9);
67     vector<int> vectorlist1 = { 9,9,9,9,9,9 };
68     listnum(list1, vectorlist1);
69 
70     ListNode list2(9);
71     vector<int> vectorlist2 = { 9,9,9 };
72     listnum(list2, vectorlist2);
73     ListNode* list = sol.addTwoNumbers(&list1, &list2);
74     for (int i = 0; list != nullptr; i++) {
75         cout << list->val << endl;
76         list = list->next;
77     }
78 }
View Code
复制代码

 

posted @   无聊的阿库娅  阅读(19)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
パティのテーマ - 神前暁
00:00 / 00:00
An audio error has occurred, player will skip forward in 2 seconds.
  1. 1 どんどんドーナツどーんと行こう! 浜口史郎
  2. 2 パティのテーマ 神前暁
  3. 3 今はその剣を置いて 川井憲次
点击右上角即可分享
微信分享提示