상세 컨텐츠

본문 제목

[LeetCode] 2. Add Two Numbers (Java)

공부

by 수다쟁이직딩이 2020. 7. 31. 14:55

본문

 

[문제 설명]

  1. 주어진 두개의 ListNode에서 각 수를 더하기.
  2. 더한 값을 다시 ListNode로 return 하기. 

[내 풀이법]

  1. 아무리 풀어봐도 해결이 안되어 다른 블로그 참고.
  2. 먼저 ListNode의 사용법 익히기.
  3. ListNode의 맨 마지막값이 없는 경우 null인점을 이용하여 문제 해결.
  4. 무한루프로 p1, p2의 next가 null까지 돌리기.
  5. 각 자리수 합은 sum으로 넣되 두 수의 합이 10이 넘어갈 경우를 고려하여 코드 짜기.

 

 

class Solution {
    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
        ListNode fake = new ListNode(0);
    	ListNode p = fake;
 
    	ListNode p1 = l1;
    	ListNode p2 = l2;
 
        int carry = 0;
        while(p1!=null || p2!=null){
            int sum = carry;
            if(p1!=null){
                sum += p1.val;
                p1 = p1.next;
            }

            if(p2!=null){
                sum += p2.val;
                p2 = p2.next;
            }

            if(sum>9){
                carry=1;
                sum = sum-10;
            }else{
                carry = 0;
            }

            ListNode l = new ListNode(sum);
            p.next = l;
            p = p.next;
        }

        //don't forget check the carry value at the end
        if(carry > 0){
            ListNode l = new ListNode(carry);
            p.next = l;
        }
        return fake.next;
    }
}

'공부' 카테고리의 다른 글

[LeetCode] 3. Longest Substring Without Repeating Characters (Java)  (0) 2020.08.03
[leetcode] 1. Two Sum (java)  (0) 2020.07.31

관련글 더보기