카테고리 없음
2. Add Two Numbers / LeetCode
건이두
2019. 12. 16. 16:02
728x90
이번 문제는 간단한 링크드리스트 문제라서, 자세한 설명은 생략하겠습니다.
- 10이넘은 값을 carry라고 한다면,
- carry되어서, 다음번 노드에 1을 전달하는 부분
- carry가 전달 되어서, 10을 넘겼을 때, 0으로 바꾸고 새노드를 1로 지정하는 부분
이 3가지 부분이 코딩할 때, 주된 포인트 입니다.
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
ListNode a = l1, b = l2;
ListNode r = null;
ListNode c = null;
int carry = 0;
while(a != null || b != null) {
int va = 0, vb = 0;
if(a != null) {
va = a.val;
a = a.next;
}
if(b != null) {
vb = b.val;
b = b.next;
}
if(null == r) {
r = new ListNode((va+vb)%10);
c = r;
carry = (va+vb)/10;
}
else {
c.next = new ListNode((va+vb)%10);
c = c.next;
if(carry > 0) {
c.val++;
carry = 0;
}
carry = (va+vb)/10;
if(c.val == 10) {
carry = 1;
c.val = 0;
}
}
}
if(carry > 0) {
c.next = new ListNode(carry);
}
return r;
}
728x90