Leet Code_2. Add Two Numbers
Dynamic Programming
https://leetcode.com/problems/add-two-numbers/
문제 해석
이 문제를 풀기위해 이해해야 할 내용은 다음과 같습니다.
목표
반대로 되어있는 node들을 각 자리별로 더하여 다시 반대로 node를 만든다
방법
1.반대로 되어있는 node
2. 반대로 계산한다
3. 10이 넘는 경우 뒤의 node로 추가해준다
결과
반대로 되어있는 node들을 각 자리별로 더하여 다시 반대로 node를 만든다
통과한 코드
class Solution {
public:
ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
ListNode* head=NULL, *pos=NULL;
ListNode *left = l1;
ListNode *right = l2;
while(left && right){
int sum = left->val + right->val;
ListNode *val = new ListNode(sum);
if (pos==NULL){
pos=val;
head=val;
}
else{
pos->next=val;
pos = pos->next;
}
left = left->next;
right = right->next;
}
while(left){
pos->next=left;
pos = pos->next;
left = left->next;
}
while(right){
pos->next = right;
pos = pos->next;
right = right->next;
}
pos = head;
while(pos){
if(pos->val>9){
if (pos->next!=NULL){
pos->next->val += 1;
}
else{
pos->next= new ListNode(1);
}
pos->val = pos->val%10;
}
pos = pos->next;
}
return head;
}
};
'프로그래밍 > LeetCode' 카테고리의 다른 글
C++ 11. Container With Most Water(Leet Code) (0) | 2020.06.17 |
---|---|
C++ 22. Generate Parentheses(Leet Code) (0) | 2020.06.16 |
C++ 1025. Divisor Game(Leet Code) (0) | 2020.06.13 |
C++ 392. Is Subsequence(Leet Code) (0) | 2020.06.10 |
C++ 303. Range Sum Query - Immutable(Leet Code) (0) | 2020.06.10 |