https://leetcode.com/problems/add-two-numbers/
난이도 : midium
두개의 리스트의 합으로 리스트를 구하여라.
/**
* 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) {
// 1. 더미 리스트 노드 생성
// 2. 리스트가 있을때 리스트의 값을 더한다.
// 3. 리스트의 합이 10이 넘어갈 수 있음으로 extra 즉 캐리를 추가한다.
// 4. tmp->next = new ListNode 생성하고 합 % 10 으로 value 를 추가한다.
// 5. tmp 리스트를 다음 리스트로 이동한다.
// 6. l1, l2 가 next 노드가 있으면 이동하고 아니면 현재 주소를 리턴한다.
ListNode dummy(0);
ListNode* tmp = &dummy;
int extra = 0;
while(l1 || l2 || extra) {
int sum = (l1 ? l1->val : 0) + (l2 ? l2->val : 0) + extra;
extra = sum / 10;
tmp->next = new ListNode(sum % 10);
tmp = tmp->next;
l1 = l1 ? l1->next : l1;
l2 = l2 ? l2->next : l2;
}
return dummy.next;
}
};
16. 3Sum Closest (0) | 2021.09.04 |
---|---|
137. Single Number II (0) | 2021.09.04 |
461. Hamming Distance (0) | 2021.09.02 |
75. Sort Colors (0) | 2021.09.02 |
121. Best Time to Buy and Sell Stock (0) | 2021.09.01 |
댓글 영역