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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

lintcode-167-链表求和

發布時間:2025/4/16 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 lintcode-167-链表求和 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

167-鏈表求和

你有兩個用鏈表代表的整數,其中每個節點包含一個數字。數字存儲按照在原來整數中相反的順序,使得第一個數字位于鏈表的開頭。寫出一個函數將兩個整數相加,用鏈表形式返回和。

樣例

給出兩個鏈表 3->1->5->null 和 5->9->2->null,返回 8->0->8->null

標簽

鏈表 Cracking The Coding Interview 高精度

思路

遍歷 2 個鏈表(即從各位開始進行加法),新建節點保存 2 個節點與上一位的進位 carry 的和,并重置 carry
需要注意的是,若鏈表最高位之和大于 10 ,需要再新建最高位節點

code

/*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode(int x) : val(x), next(NULL) {}* };*/ class Solution { public:/*** @param l1: the first list* @param l2: the second list* @return: the sum list of l1 and l2 */ListNode *addLists(ListNode *l1, ListNode *l2) {// write your code hereListNode *head = new ListNode(0);ListNode *temp = head;int carry = 0;while (l1!= NULL && l2 != NULL) {int sum = l1->val + l2->val + carry;ListNode *node = new ListNode(sum % 10);carry = (sum >= 10);temp->next = node;l1 = l1->next;l2 = l2->next;temp = temp->next;}while (l1 != NULL) {int sum = l1->val + carry;ListNode *node = new ListNode(sum % 10);carry = (sum >= 10);temp->next = node;l1 = l1->next;temp = temp->next;}while (l2 != NULL) {int sum = l2->val + carry;ListNode *node = new ListNode(sum % 10);carry = (sum >= 10);temp->next = node;l2 = l2->next;temp = temp->next;}if (l1 == NULL && l2 == NULL && carry == 1) {ListNode *node = new ListNode(carry);temp->next = node;}return head->next;} };

轉載于:https://www.cnblogs.com/libaoquan/p/7276889.html

總結

以上是生活随笔為你收集整理的lintcode-167-链表求和的全部內容,希望文章能夠幫你解決所遇到的問題。

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