on
릿코드 2 - 두 수 더하기 (리스트)
릿코드 2 - 두 수 더하기 (리스트)
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)이라 괜찮다고 생각했는데 더 효율적인 방법이 있나보다
from http://mvmvm.tistory.com/55 by ccl(A) rewrite - 2021-08-05 20:26:14