본문 바로가기

Dev Language/LeetCode

[LeetCode] 2. Add Two Number

반응형

전 아래와 같이 풀었습니다.


/**
 * 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) {
        int currentSum = 0;
        bool carry = false;
        ListNode *currentNode = NULL;
        ListNode *rootNode = NULL;        
        
        while ( l1 || l2 || carry ) {
        
            currentSum = 0;
            
            if ( l1 ) currentSum = l1->val;
            if ( l2 ) currentSum += l2->val;
            
            if ( carry ) {
                currentSum ++;
                carry = false;
            }
            
            if ( rootNode == NULL ) {
                rootNode = new ListNode(currentSum % 10);
                currentNode = rootNode;
            } else {
                currentNode->next = new ListNode(currentSum % 10);
                currentNode = currentNode->next;
            }
            
            if ( currentSum > 9 ) carry = true;
            
            if ( l1 ) l1 = l1->next;
            if ( l2 ) l2 = l2->next;
            
        }
        
        return rootNode;
        
    }

};

그 결과 1562개의 테스트 케이스에 통과하였고 46ms가 소요되었네요


근데 이 소요 시간은 같은 코드임에도 불구하고 할때마다 다르네요... 편차도 심하고^^




반응형