LeetCode 알고리즘 질문: 2. 두 숫자 더하기


주제 설명:

두 개의 음수가 아닌 정수를 나타내는 두 개의 비어 있지 않은 연결 목록이 제공됩니다. 각 숫자는 역순으로 저장되며 각 노드는 하나의 숫자만 저장할 수 있습니다.

두 개의 숫자를 더하고 그 합을 나타내는 연결리스트를 같은 형식으로 반환해주세요.

숫자 0을 제외하면 두 숫자 모두 0으로 시작하지 않을 것이라고 가정할 수 있습니다.

题目链接: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;
    }
};

이 것이 마지막이다

Supongo que te gusta

Origin blog.csdn.net/Aer_7z/article/details/132783243
Recomendado
Clasificación