Add Two Numbers
2020.12.08 조흔나 링크드리스트 학습
You are given two non-empty linked lists representing two non-negative integers. The digits are stored in reverse order, and each of their nodes contains a single digit. Add the two numbers and return the sum as a linked list.
You may assume the two numbers do not contain any leading zero, except the number 0 itself.
Example 1: Input : l1 = [2,4,3], l2 = [5,6,4] Output : [7,0,8] 설명 : 342 + 465 = 807
Example 2 : Input : l1 = [0], l2 = [0] Output : [0]
Example 3 : Input : l1 = [9,9,9,9,9,9,9], l2 = [9,9,9,9] Output : [8,9,9,9,0,0,0,1]
Constraints :
The number of nodes in each linked list is in the range [1,100].
0 <= Node.val <= 9
It is guaranteed that the list represents a number that does not have leading zeros.
자료구조 : LinkedNode 이용
알고리즘 1. Input ListNode를 가져와서 바로 사용 및 조작하지 않고, 복사한다. ListNode p = inputLN1 ,ListNode q = inputLN2; int x = p.val; int y = q.val; 2. 각 자리수의 합 sum = x + y + carry; carry = sum/10; result.next = new ListNode(sum % 10);//새로운 노드를 생성하여 붙인다. 3. 다음 노드로 이동 : p = p.next; q = q.next; result = result.next;
알고리즘을 Java로 구현 * 더미노드를 사용하는 이유 : 더미노드를 사용하지 않아도 되지만, 헤드노드에 해당하는 노드를 삭제/추가/삽입할 때 포인터 처리를 일일히 다 해줘야한다. 하지만 더미노드를 사용하여 더미노드 뒤에 노드를 추가/삭제/수정하게 되면 코드를 일반화하여 일관성 있게 쓸 수 있기 때문에 더미노드를 사용한다.
배운 내용 정리 Java에서 링크드리스트 사용하는 방법 1. LinkedNode 객체 생성 및 데이터 추가
Last updated