2. Add Two Numbers(Java)

1265 단어 leetecode
제목: 두 개의 음수 가 아 닌 두 개의 링크 된 목록 이 제 공 됩 니 다. 숫자 는 역순 으로 저장 되 며 각 노드 에는 한 개의 숫자 가 포 함 됩 니 다. 두 개의 숫자 를 추가 하고 링크 된 목록 으로 반환 합 니 다.
Input: (2 -> 4 -> 3) + (5 -> 6 -> 4)Output: 7 -> 0 -> 8
해석: 두 개의 링크 에 합 의 를 구하 고 진 위 를 주의 하 십시오 (변수 carry).두 가지 상황 을 고려 해 야 한다.
  • 두 링크 의 길이 가 일치 합 니 다
  • 두 개의 링크 의 길이 가 일치 하지 않 는 다 (짧 은 링크 가 부족 한 노드 보충 처리)
  •  /**
      *         ,   
      */
    public class Solution {
        public ListNode addTwoNumbers(ListNode a, ListNode b) {
            if(a==null && b==null) return null;
            if(a==null) return b;
            if(b==null) return a;
            ListNode cura=a,curb=b;
            ListNode head=new ListNode(-1),cur=head;
            
            int carry=0;
            while(cura!=null || curb!=null){
                int val_a=cura!=null?cura.val:0;//    , 0
                int val_b=curb!=null?curb.val:0;//    , 0
                int sum=val_a+val_b+carry;
    
                cur.next=new ListNode(sum%10);
                carry=sum/10;
                cur=cur.next;
                
                cura=cura!=null?cura.next:null;//!!  ,  null
                curb=curb!=null?curb.next:null;
            }
            
            if(carry!=0){
              cur.next=new ListNode(carry);//        
            }
            return head.next;
        }
    }

    좋은 웹페이지 즐겨찾기