링크 로 큰 정수 덧셈 을 실현 하 다.

배경: LeetCode - 2. 숫자 2 개 추가
설명:
비어 있 지 않 은 링크 두 개 를 드 리 겠 습 니 다. 그리고 링크 의 숫자 는 역순 입 니 다. 지금 은 이 두 개의 링크 가 대표 하 는 숫자 와 똑 같이 링크 로 표시 하 라 고 합 니 다.
링크 정의:
 // Definition for singly-linked list.
 struct ListNode {
     int val;
     ListNode *next;
     ListNode(int x) : val(x), next(NULL) {}
 };

코드:
class Solution {
public:
    ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
        ListNode *ret = l1, *pre = l1;
        int up = 0;
        while (l1 != NULL && l2 != NULL) {
            l1->val = l1->val + l2->val + up;
            up = l1->val / 10;
            l1->val %= 10;
            pre = l1;
            l1 = l1->next;
            l2 = l2->next;
        }
        if (l1 == NULL)
            pre->next = l2;
        l1 = pre->next;
        while (l1 != NULL) {
            l1->val = l1->val + up;
            up = l1->val / 10;
            l1->val %= 10;
            pre = l1;
            l1 = l1->next;
        }
        if (up != 0) {
            ListNode *tmp = new ListNode(up);
            pre->next = tmp;
        }
        return ret;
    }
};

좋은 웹페이지 즐겨찾기