【leetcode】两数相加【中等】(C++递归解法)
创始人
2024-11-26 12:33:58

总体来说,链表类问题往往是蛮适合用递归的方式求解的

要写出有效的递归,关键是要考虑清楚:

0. return的条件

1. 每步递归的操作,以及何时调用下一步递归

2. 鲁棒性(头,尾结点等特殊情况是否依旧成立)

题目见下

结构体定义

struct ListNode//在c++定义结构体时,typedef不是必须的 { 	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 { private: 	int k = 0; //用来记录进位 public:     ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {     	if(l1 == nullptr && l2 == nullptr) 		{ 			if(k == 1) 			{ 				ListNode* t_node = new ListNode(1); 				return t_node; 			} 			else return nullptr; 		} 		else if(l1 == nullptr) 		{ 			l2->val += k; 			if(l2->val != 10)  return l2; 			else{ 				k = 1; 				l2->next = addTwoNumbers(l1, l2->next); 				l2->val = 0; 				return l2; 			} 		}        		else if(l2 == nullptr) 		{ 			l1->val += k;   			if(l1->val != 10)  return l1; 			else{ 				k = 1; 				l1->val = 0; 				l1->next = addTwoNumbers(l1->next, l2); 				return l1; 			} 		} 		else{ 			l1->val += (l2->val + k); 			if(l1->val >= 10) 			{ 				l1->val %= 10; 				k = 1; 			} 			else k = 0; 			l1->next = addTwoNumbers(l1->next, l2->next); 			return l1; 		}       } };  

~希望对你有启发~  

相关内容

热门资讯

海信扩大3C智能硬件版图,底气... 5月8日,海信召开全场景新品发布会,推出涵盖海信和Vidda两大品牌的六款3C智能硬件新品。这是海信...
稳石机器人获锦富资本B轮投资 2026年5月7日,全场景物流机器人解决方案提供商稳石机器人(深圳)有限公司(简称“稳石机器人”)宣...
“秒解BL锁”获得“刷机”自由... 近期,某手机芯片厂商相关漏洞被不法分子定向利用,给网上热炒的“秒解BL锁”行为敲响了警钟。所谓BL,...
涉及手机、眼镜、耳机等 人工智... 中新网北京5月8日电 工业和信息化部、国家市场监督管理总局、商务部等部门8日联合发布《人工智能终端智...
全球首创!“来电岛1号”落地青... 齐鲁晚报·齐鲁壹点记者 赵波 5月8日,全球首个无人驾驶自动充电系统“来电岛1号”在青岛发布。该系统...