-
2. Add Two Numbers / LeetCode카테고리 없음 2019. 12. 16. 16:02728x90
이번 문제는 간단한 링크드리스트 문제라서, 자세한 설명은 생략하겠습니다.
- 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