leetcode 문제 풀이 보고서 2. 두 개의 숫자 추가

2781 단어 leetcode
leetcode 문제 풀이 보고서 2. 두 개의 숫자 추가
제목 주소
난이도
제목 설명
단일 체인 표 로 하나의 큰 정 수 를 표시 하 는데 그 중에서 단일 체인 표 의 각 노드 는 하나의 숫자 0 ~ 9 밖 에 없다.이러한 단일 체인 표 두 개 에 표 시 된 정 수 를 주 고 그들의 합 을 구하 십시오 (아니면 단일 체인 표 로 표시 합 니까)
나의 생각
문 제 는 이해 하기 어렵 습 니 다. 처음에 단일 체인 표를 대응 하 는 노드 에 만 추가 하 는 줄 알 았 는데 단일 체인 시 계 를 하나의 정수 에 더 하 는 것 을 볼 줄 몰 랐 습 니 다. 그러면 진 위 를 고려 해 야 합 니 다.문 제 를 이해 한 후에 어렵 지 않 습 니 다. 어 려 운 점 은 1. 단일 체인 표 의 조작 (데이터 구조 지식 검증) 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* head = new ListNode(0);
        ListNode* cur = head;
        short flag = 0; //    
        //    l1 l2        
        while (l1 != NULL || l2 != NULL) {
            int lv1, lv2;
            if (l1 == NULL) {
                lv1 = 0;
            } else {
                lv1 = l1->val;
                l1 = l1->next;
            }
            if (l2 == NULL) {
                lv2 = 0;
            } else {
                lv2 = l2->val;
                l2 = l2->next;
            }
            short v = lv1 + lv2 + flag; //   ,       0 9, short  
            flag = v / 10;
            v = v % 10;
            cur->next = new ListNode(v);
            cur = cur->next;
        }
        //             
        if (flag > 0) {
            cur->next = new ListNode(flag);
        }
        return head->next;
    }
};

공식 문 제 를 읽다.
공식 문제 풀이.
기본적으로 내 가 생각 하 는 것 과 차이 가 많 지 않다.
사상 핵심 총화
문제 의 요 구 를 이해 하고 각종 특수 상황 에 주의 하여 링크 의 조작 을 잘 이해 하지 마 세 요.

좋은 웹페이지 즐겨찾기