ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 2. Add Two Numbers / LeetCode
    카테고리 없음 2019. 12. 16. 16:02
    728x90

    이번 문제는 간단한 링크드리스트 문제라서, 자세한 설명은 생략하겠습니다.

    • 10이넘은 값을 carry라고 한다면,
    • carry되어서, 다음번 노드에 1을 전달하는 부분
    • carry가 전달 되어서, 10을 넘겼을 때, 0으로 바꾸고 새노드를 1로 지정하는 부분

    이 3가지 부분이 코딩할 때, 주된 포인트 입니다.

        /**
        * Definition for singly-linked list.
        * public class ListNode {
        *     int val;
        *     ListNode next;
        *     ListNode(int x) { val = x; }
        * }
        */
        class Solution {
          public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
              ListNode a = l1, b = l2;
              ListNode r = null;
              ListNode c = null;
              int carry = 0;
    
              while(a != null || b != null) {
                  int va = 0, vb = 0;
                  if(a != null) {
                      va = a.val;
                      a = a.next;
                  }
                  if(b != null) {
                      vb = b.val;
                      b = b.next;
                  }
    
                  if(null == r) {
                      r = new ListNode((va+vb)%10);
                      c = r;
                      carry = (va+vb)/10;
                  }
                  else {
                      c.next = new ListNode((va+vb)%10);
                      c = c.next;
                      if(carry > 0) {
                          c.val++;
                          carry = 0;
                      }
    
                      carry = (va+vb)/10;
    
                      if(c.val == 10) {
                          carry = 1;
                          c.val = 0;
                      }
                  }
        }
    
        if(carry > 0) {
            c.next = new ListNode(carry);
        }
    
        return r;
    }
    728x90
Designed by Tistory.