記事ディレクトリ
トピックの説明:
2 つの非負の整数を表す 2 つの空ではないリンク リストが与えられます。それぞれの数字は逆の順序で保存され、各ノードは 1 つの数字のみを保存できます。
2 つの数値を加算し、その合計を同じ形式で表すリンク リストを返してください。
どちらの数字もゼロ以外のゼロで始まるとは考えられません。
题目链接:
2. 2 つの数値を加算します
コード経由
新しいリンク リストを作成します。
考えやすく、操作しやすいのがメリットですが、その分記憶容量が大きくなり、リンクリスト自体のデータが大きい場合はメモリ消費量も増加します。
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode() : val(0), next(nullptr) {}
* ListNode(int x) : val(x), next(nullptr) {}
* ListNode(int x, ListNode *next) : val(x), next(next) {}
* };
*/
class Solution {
public:
ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
ListNode *first=new ListNode();
ListNode* p=first,*p1=l1,*p2=l2;
while(p1||p2){
if(p1){
p->val+=p1->val;p1=p1->next;}
if(p2){
p->val+=p2->val;p2=p2->next;}
if(p1||p2||p->val>9){
p->next=new ListNode();
if(p->val>9){
p->val-=10;
p->next->val=1;
}
p=p->next;
}
}
return first;
}
};
これで終わりだ