題目描述:
給出兩個 非空 的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式儲存的,並且它們的每個節點只能儲存 一位 數字。
如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。
您可以假設除了數字 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 ...