leetcode 2兩數相加

2021-10-07 21:57:25 字數 1699 閱讀 3228

給出兩個 非空 的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式儲存的,並且它們的每個節點只能儲存 一位 數字。

如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。

您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。

示例

輸入:(2 -> 4 -> 3) + (5 -> 6 -> 4)

輸出:7 -> 0 -> 8

原因:342 + 465 = 807

為了在 c++ 中表示鍊錶,需要有乙個表示鍊錶中單個結點的資料型別。不但需要包含要儲存的資料結構,還要有乙個指向另乙個相同型別結點的指標

建立單鏈表步驟:

建立頭節點 head,並且將當前結點 p指向頭結點(p = head)

建立下乙個結點q,當前結點p的 下一結點為q(p -> next = q)

當前結點p後移一位(p = p -> next)

// 假設每個結點將儲存乙個型別為 double 的資料項,則可以宣告以下型別來存放結點:

struct listnode

;

// 建立 單鏈表

listnode* head =

newlistnode(0

);// 建立 頭節點 ,初始化為0

listnode* p = head;

宣告乙個中間變數(指標),指向頭結點,用於遍歷鍊錶

p->value =1;

listnode *q=

new listnode;

//建立 第二個節點

q->value =2;

q->next =

nullptr

;// 鍊錶第二個節點結束

p->next = q;

// 第乙個節點指向第二個節點

獲取兩個鍊錶所對應的長度

在較短的鍊錶末尾補零

對齊相加考慮進製

/**

* definition for singly-linked list.

* struct listnode

* };

*/class

solution

// 返回 從 head->next 位址後的所有資料;因為我們預設頭裡面存放 0,

// 所以這裡不需要輸出頭節點,真正需要的資料從頭節點的下乙個開始

return head-

>next;

// 輸出 [7,0,8]

// return head; 輸出 [0,7,0,8]}}

;

參考:

1、2、

3、

LeetCode2 兩數相加

嗯。今天兩個簡單題,我可能要墮落了 先貼第乙個 給定兩個非空鍊錶來表示兩個非負整數。位數按照逆序方式儲存,它們的每個節點只儲存單個數字。將兩數相加返回乙個新的鍊錶。你可以假設除了數字 0 之外,這兩個數字都不會以零開頭。示例 輸入 2 4 3 5 6 4 輸出 7 0 8原因 342 465 807...

LeetCode 2 兩數相加

題目 給定兩個非空鍊錶來表示兩個非負整數。位數按照逆序方式儲存,它們的每個節點只儲存單個數字。將兩數相加返回乙個新的鍊錶。你可以假設除了數字 0 之外,這兩個數字都不會以零開頭。示例 輸入 2 4 3 5 6 4 輸出 7 0 8 原因 342 465 807 解題 這題就比較簡單了,兩數相加處理好...

LeetCode 2 兩數相加

題目描述 給定兩個非空鍊錶來表示兩個非負整數。位數按照逆序方式儲存,它們的每個節點只儲存單個數字。將兩數相加返回乙個新的鍊錶。你可以假設除了數字 0 之外,這兩個數字都不會以零開頭。題目思路 先從最低有效位也就是列表 l1 和 l2 的表頭開始相加。由於每位數字都應當處於 0 9 的範圍內,我們計算...