728x90
반응형
문제
분석
1. 비어져 있는 리스트가 올수 없다.
2. 역순으로 되어 있다.
3. 두개의 수를 더했을때 carry 가 발생할 것을 생각 하여 변수로 둔다.
- carray + num1 + num2 가 되겠다.
4. 함정 발견 ListNode 로 되어 있기 때문에 Header 를 가르키는 객체를 만들어야 한다.
구현
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode() {}
* ListNode(int val) { this.val = val; }
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
* }
*/
class Solution {
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
int num = 0;
int carry =0;
ListNode head = new ListNode();
ListNode current = new ListNode();
head = current;
while(l1 != null || l2 != null) {
num = 0;
if (l1 != null) {
num = l1.val;
l1 = l1.next;
}
if (l2 != null) {
num += l2.val;
l2 = l2.next;
}
num += carry;
if (num > 9) {
carry = 1;
} else {
carry = 0;
}
current.next = new ListNode(num % 10);
current = current.next;
}
if (carry != 0) {
current.next = new ListNode(1);
current = current.next;
}
return head.next;
}
}
결과
leetcode 문제:
https://leetcode.com/problems/add-two-numbers/submissions/
728x90
반응형
'Algorithm > LeetCode' 카테고리의 다른 글
[LeetCode] 14. Longest Common Prefix (0) | 2022.04.30 |
---|---|
[LeetCode] 13.Roman to Integer (0) | 2022.04.23 |
댓글