반응형
전 아래와 같이 풀었습니다.
/**
* 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;
}
* 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가 소요되었네요
근데 이 소요 시간은 같은 코드임에도 불구하고 할때마다 다르네요... 편차도 심하고^^
반응형
'Dev Language > LeetCode' 카테고리의 다른 글
[LeetCode] 5. Longest Palindromic Substring (0) | 2018.01.10 |
---|---|
[LeetCode] 4. Median of Two Sorted Arrays (0) | 2018.01.10 |
[LeetCode] 3. Longest Substring Without Repeating Characters (0) | 2018.01.10 |
[LeetCode] 1. Two Sum (0) | 2017.12.31 |
[LeetCode] 소개 - 온라인 코딩 문제 풀기 (0) | 2017.12.30 |