두 수 를 더 하 다 [링크 덧셈] LeetCode. 2

두 개의 체인 시 계 를 제시 하여 두 개의 마이너스 정 수 를 나타 낸다.그 중에서 이들 각자 의 자릿수 는 방식 으로 저장 되 고 그들의 각 노드 는 숫자 만 저장 할 수 있다.만약 우리 가 이 두 개의 수 를 더 하면 새로운 링크 로 돌아 가 그들의 합 을 나 타 낼 것 이다.숫자 0 을 제외 하고 이 두 숫자 는 0 으로 시작 하지 않 을 것 이 라 고 가정 할 수 있 습 니 다.
예시:
입력: (2 - > 4 - > 3) + (5 - > 6 - > 4) 출력: 7 - > 0 - > 8 원인: 342 + 465 = 807
생각:
  • 진입 표지 c 설정 하기;
  • 링크 1 또는 링크 2 또는 c 가 비어 있 지 않 을 경우 링크 1 + 링크 2 + c 의 값 을 새로운 노드
  • 에 넣 습 니 다.
  • 만약 에 새로운 노드 의 값 이 10 보다 적 으 면 답 링크 에 직접 가입 하고 진입 표지 c 를 0
  • 으로 설정 합 니 다.
  • 10 보다 크 면 새 노드 의 값 을 10 으로 줄 이 고 답안 체인 테이블 에 넣 고 진입 표 지 를 1
  • 로 설정한다.
    코드 는 다음 과 같 습 니 다:
    ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
        int c = 0;
        ListNode *dummy = new ListNode(-1),*end = dummy;
        while(l1 || l2 || c){
            int v = (l1?l1->val:0) + (l2?l2->val:0) + c;
            if(v >= 10) {c = 1;v-=10;}else c = 0;
            end->next = new ListNode(v);end = end->next;
            if(l1)l1 = l1->next;
            if(l2)l2 = l2->next;
        }
        return dummy->next;
    }

    좋은 웹페이지 즐겨찾기