力扣 题目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 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统