日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

LeetCode-Add Two Numbers

發布時間:2024/4/17 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。