LeetCode-Add Two Numbers
生活随笔
收集整理的這篇文章主要介紹了
LeetCode-Add Two Numbers
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
沒有難度的題目,純用來練習鏈表操作和遞歸的使用的,難得的一次就能ac大小數據呀!
1 class Solution { 2 public: 3 ListNode *addTwoNumbers(ListNode *l1, ListNode *l2) { 4 // Start typing your C/C++ solution below 5 // DO NOT write int main() function 6 ListNode *res = add(l1, l2, false); 7 return res; 8 } 9 ListNode *add(ListNode *l1, ListNode *l2, bool flag) { 10 int carry = 0; 11 bool cflag = false; 12 if (flag) { 13 carry = 1; 14 } 15 if (l1 == NULL && l2 == NULL) { 16 if (!flag) { 17 return NULL; 18 } 19 ListNode *node = new ListNode(); 20 node->val = carry; 21 node->next = NULL; 22 return node; 23 } 24 if (l1 == NULL) { 25 ListNode *node = l2; 26 node->val = l2->val + carry; 27 if (node->val >= 10) { 28 node->val -= 10; 29 cflag = true; 30 } 31 node->next = add(NULL, l2->next, cflag); 32 return node; 33 } 34 if (l2 == NULL) { 35 ListNode *node = l1; 36 node->val = l1->val + carry; 37 if (node->val >= 10) { 38 node->val -= 10; 39 cflag = true; 40 } 41 node->next = add(l1->next, NULL, cflag); 42 return node; 43 } 44 ListNode *node = l1; 45 node->val = l1->val + l2->val + carry; 46 if (node->val >= 10) { 47 node->val -= 10; 48 cflag = true; 49 } 50 node->next = add(l1->next, l2->next, cflag); 51 return node; 52 } 53 };記得以前在待字閨中上看到過相似的題目,好像叫單鏈表和之戀,那道題目中的鏈表表示的數是正向的,
而且不允許用遞歸,而且還要求最多只能掃描鏈表兩遍。當時沒想出來,而且陳利人(http://weibo.com/lirenchen)給的答案也沒有很好的
解決這個問題,后來好像有人給出了一個很巧妙的答案。
?
轉載于:https://www.cnblogs.com/chasuner/p/addTwoNumbers.html
總結
以上是生活随笔為你收集整理的LeetCode-Add Two Numbers的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: GC分析中提到的根对象是什么
- 下一篇: IOS - 快速入门