그냥 리스트 두개를 더하면 되는거 같은데 왜인지 모르겠는데 런타임 에러 난다 .ㅠㅠ
말록을 잘못 사용하는거 같다.
class Solution {
public:
ListNode * addTwoNumbers(ListNode* l1, ListNode* l2) {
ListNode *ans = (ListNode*)malloc(sizeof(ListNode));
ListNode *cur = ans;
while (l1->next != NULL || l2->next != NULL) {
int sum = l1->val + l2->val;
int up = 0;
if (sum <10) {
cur->val = sum;
up = 0;
}
else {
cur->val = sum - 10;
up = 1;
}
cur->next = (ListNode*)malloc(sizeof(ListNode));
cur = cur->next;
if (l1->next != NULL)
l1 = l1->next;
if (l2->next != NULL)
l2 = l2->next;
}
return ans;
}
};
malloc vs new
[https://hwan-shell.tistory.com/12]
보고 내가 잘 몰랐던 부분은 new도 반환 값이 주소값이라는 사실이다....ㅎㅎ
A *p = new A();
new로 위 코드를 바꾸니까 된다, new로 하면 자동으로 초기화도 되나 보다.
class Solution {
public:
ListNode * addTwoNumbers(ListNode* l1, ListNode* l2) {
ListNode* ans = new ListNode();
ListNode *cur = ans;
int up = 0;
while (l1 != NULL || l2 != NULL) {
int sum = l1->val + l2->val;
//cout << sum<<"\n";
if (sum <10) {
cur->val = sum + up;
up = 0;
}
else {
cur->val = sum + up - 10;
up = 1;
}
if(l2->next == NULL && l1->next == NULL){
if(up == 1){
cur->next = new ListNode(1);
}
break;
}
cur->next = new ListNode();
cur = cur->next;
if (l1->next != NULL)
l1 = l1->next;
else{
l1->val =0;
}
if (l2->next != NULL)
l2 = l2->next;
else
l2->val = 0;
}
return ans;
}
};
틀렸다. 리스트를 잘 다루지 못했다.....
반례
Input
[1]
[9,9]
Output
[0,10]
Expected
[0,0,1]
'알고리즘 문제 풀기' 카테고리의 다른 글
<부분합 문제?> 다양한 종류의 냅색 문제?부분합?에 대한 이해를 해보자. (0) | 2020.04.08 |
---|---|
<백준> 11400번 단절선, 이중 연결 요소. (0) | 2020.04.04 |
<leet code> Two sum (0) | 2020.03.12 |
<백준> 17070번 : 파이프 옮기기1 (0) | 2020.03.12 |
<leet code> 이번에는 풀음. Median of Two Sorted Arrays (0) | 2020.03.12 |