class Solution {
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
ListNode head = new ListNode();
ListNode cursor = head;
int up = 0;
int num1, num2;
while(l1 != null || l2 != null) {
if(l1 == null) num1 = 0;
else {
num1 = l1.val;
l1 = l1.next;
}
if(l2 == null) num2 = 0;
else {
num2 = l2.val;
l2 = l2.next;
}
int tmp = num1 + num2 + up;
up = tmp / 10;
cursor.val = tmp % 10;
if(l1 == null && l2 == null){
if(up != 0) {
cursor.next = new ListNode();
cursor = cursor.next;
cursor.val = up;
}
break;
}
cursor.next = new ListNode();
cursor = cursor.next;
}
cursor = head;
return head;
}
}
l1, l2의 노드에서 value를 뽑고 next가 있으면 next로 옮긴다. 그 후에 덧셈 연산을 진행하고 10의 자릿수는 up 변수에 저장해두고 이후에 함께 더하도록 한다. 더하고 난 후에 l1과 l2가 null인지를 체크하여 둘 다 null이면 종료한다.
결과는 완전 평균.. ㅋㅋㅋㅋㅋㅋ 내가 생각해도 평범한 방법이다. 뭔가 특별한게 없을까.
시간복잡도와 공간복잡도가 O(n)이라 괜찮다고 생각했는데 더 효율적인 방법이 있나보다
'컴퓨터 > 코테' 카테고리의 다른 글
릿코드62 - Unique paths [dp] (0) | 2021.08.07 |
---|---|
릿코드155 - min Stack [스택] (0) | 2021.08.07 |
릿코드 20 - 괄호 짝 맞추기 (0) | 2021.08.05 |
릿코드 104 - 트리의 가장 깊은 층 (0) | 2021.08.04 |
백준 1068 - 트리 문제 (0) | 2021.08.04 |