오늘의 주제는 브러시 LeetCode 두 번째 질문, 두 숫자 함께, 그리고 지금이 질문을 할 수있는 매우 간단합니다
첫번째 생각했다 오른쪽 두 숫자가 추출 된 후, 가산하고 새로운리스트를 생성하지만, 문제가 있음을, int 데이터 형식의 최대 수를 초과 할 가능성이있다. 다음과 같이 코드입니다 :
공용 정적 ListNode 솔루션 (ListNode L1, L2 ListNode) { // 입력 문자열은 최대 범위 INT를 초과 할 수 있기 때문에이 방법은 정확하지 ListNode 헤드 = 새로운 새 ListNode (0 ) ListNode P = 헤드; 모두 StringBuilder의 StringBuilder = 새로운 새 모두 StringBuilder (); 그동안 (L1 =! 널 ) { StringBuilder.Insert ( 0 , l1.val) L1 = l1.next; } 모두 StringBuilder stringBuilder2 = 새로운 새 모두 StringBuilder (); 그동안 ! (L2 = 널) { stringBuilder2.insert ( 0 , l2.val); L2 = l2.next; } INT의 합 =있는 Integer.parseInt (stringBuilder.toString ()) + 있는 Integer.parseInt (stringBuilder2.toString ()); 목록 <정수> 목록 = 새로운 ArrayList를 <> (); 하지만 SUM (! = 0 ) { 에는 list.add (합계 10 % ); 합 = 합 / 10 ; } 에 대해 ( int로 ) 난을는 list.size (<; I = 0 난 ++ ) { ListNode listNode = 새로운ListNode (list.get (I)); p.next = listNode; P = listNode; } 반환 head.next을; }
데이터가 높은 음 로우에서 저장되기 때문에 다음에, 따라서, 공정을 시뮬레이션 할 수있는 데이터를 추가, 가산 될 수있다. 참고로이 시점에서 세계 수의 필요성, 데이터가 수행 할 필요가 있음을 확인하고, 궁극적으로 모든 숫자가 함께 결국 수행 여부를 결정해야 할 것입니다, 우리는 또한 새로운 목록 노드를 생성해야
공용 정적 ListNode의 solution2 (ListNode L1, L2 ListNode) { ListNode 헤드 = 새로운 ListNode (0 ); ListNode 피 = 헤드; INT 사전 = 0 ; 반면 (! = L1 널 ! && L2 = 널 ) { INT NUM1 = l1.val; INT NUM2 = l2.val; L1 = l1.next; L2 = l2.next; INT 합 = NUM1 NUM2 + +는 미리; ListNode newnode = 새ListNode (합계 10 % ); 사전 = 합 / 10 ; p.next = newnode; P = newnode; } ListNode 기타 = 새로운 ListNode (0 ); 만약 (! L1 = 널 (null) ) { others.next = L1; } 다른 경우 (L2! = null이 ) { others.next = L2; } 다른 = others.next; 동안 (다른 사람! = null이) { INT NUM = others.val; INT 합 NUM = + 프리; ListNode newnode = 새로운 ListNode (합계 10 % ); 사전 = 합 / 10 ; p.next = newnode; P = newnode; 다른 사람 = others.next; } 경우 (사전! = 0 ) { ListNode newnode = 새로운 ListNode (프리); p.next = newnode; } 반환 head.next을; }