leetcode鍊錶第二題 兩數相加

2021-10-06 06:33:38 字數 1598 閱讀 8585

題目描述:

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

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

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

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

輸出:7 -> 0 -> 8

原因:342 + 465 = 807

解題思路和考慮的問題:

思路:設兩個工作指標同時移動相加,把值儲存在新結點中

問題:1、進製問題:

設乙個count記錄進製,由於加法進製最多為1,判斷有進製後直接count=1,else count=0;

2、倆個數字數不相等,列:677和87:

在第一次迴圈後判斷哪個數為高位數,再同count相加如新鍊錶

3、兩個數所有位數處理完後,還需判斷有無進製,列545+555=1000:

**:

/**

* definition for singly-linked list.

* struct listnode ;

*/typedef

struct listnode lnode;

typedef lnode* list;

struct listnode*

addtwonumbers

(struct listnode* l1,

struct listnode* l2)

else

count=0;

tempnode=

(list)

malloc

(sizeof

(lnode));

tempnode->val=tempval;

if(head==

null

)else

p1=p1->next;

p2=p2->next;

}while

(p1!=

null

)else

tempnode=

(list)

malloc

(sizeof

(lnode));

tempnode->val=tempval;

p->next=tempnode;

p=p->next;

p1=p1->next;

}while

(p2!=

null

)else

tempnode=

(list)

malloc

(sizeof

(lnode));

tempnode->val=tempval;

p->next=tempnode;

p=p->next;

p2=p2->next;}if

(count!=0)

p->next=

null

;//尾部置空

return head;

}

Leetcode 第二題 兩數相加

給出兩個非空的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照逆序的方式儲存的,並且它們的每個節點只能儲存一位數字。如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。示例 輸入 2 4 3 5 6 4 輸出 7 0 8 ...

leetcode 第二題 兩數求和

題目 我的第一種解法 企圖 寫乙個把鍊錶中的值轉換成 整型的方法,再寫乙個把整型轉換成鍊錶形式的方法,以此得到結果返回 includeusing namespace std struct listnode class solution long getnum listnode l return su...

LeetCode第二題 兩數相加

給出兩個非空的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照逆序的方式儲存的,並且它們的每個節點只能儲存一位數字。如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。您可以假設除了數字0之外,這兩個數都不會以0開頭。輸入 2 4 3 5 6 4 輸出 7 0 8 原因 342 ...