LeetCode アルゴリズムの質問: 2. 2 つの数値の加算


トピックの説明:

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;
    }
};

これで終わりだ

おすすめ

転載: blog.csdn.net/Aer_7z/article/details/132783243