https://leetcode.com/problems/add-two-numbers/submissions/
/**
* 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) {
ListNode ans = new ListNode();
ListNode ptr=ans;
ListNode p1=l1;
ListNode p2=l2;
int leftover=0;
while(p1!= null || p2!=null){
int temp=leftover;
if(p1 !=null) temp+=p1.val;
if(p2!=null) temp+=p2.val;
if (temp<10){
leftover=0;}
else{
leftover=1;
temp-=10;
}
ptr.next=new ListNode(temp);
ptr=ptr.next;
if(p1!=null) p1=p1.next;
if(p2!=null) p2=p2.next;
}
if(leftover!=0) ptr.next=new ListNode(leftover);
return ans.next;
}
}
10을 넘어서 자릿수가 올라갈 때, leftover를 사용했다!
만약 모든 루프를 다 돌았을 때, leftover가 0이 아니면 마지막에 그 값을 추가해주었다.
head가 되는 부분을 빈 노드로 했기 때문에, 리턴은 헤드 노드의 다음 노드를 리턴하도록 했다!
'Algorithm > Java' 카테고리의 다른 글
leetcode - Reverse Integer (1) | 2022.09.21 |
---|---|
leetcode - Zigzag Conversion (1) | 2022.09.21 |
프로그래머스 - n^2 배열 자르기 (0) | 2022.09.18 |
프로그래머스 - 멀리 뛰기 (0) | 2022.09.18 |
프로그래머스 - 영어 끝말잇기 (0) | 2022.09.18 |