이름
두 음이 아닌 정수를 나타내는 두 개의 비 하늘의 링크 목록이 제공됩니다. 숫자는 역순으로 저장되어 자신의 각 노드는 하나의 숫자를 포함하고 있습니다. 두 숫자를 추가하고 연결리스트로 돌아갑니다.
당신은 두 개의 숫자는 숫자 0 자체를 제외하고, 선행 0을 포함하지 않는 가정 할 수있다.
예:
입력 : (2 -> 4 -> 3) + (5 -> 6 -> 4)
출력 : 7 -> 0 -> 8
명 : 342 + 465 = 807.
사고
이 질문은 엉망이 라인의 관계를 알아 내기 위해 무엇을 테스트 목록에, 나는 반응하는 무지 긴 시간이었다.
또한주의캐리길을 잃기 운반하지 마십시오.
이 두 숫자는 반드시주의를 기울이 특별한 경우를 처리하기 위해 동일하지 않을 수 있습니다 주어, 잊지하지만 당황하지, 기억하는 많은 구덩이를 강화한다.
코드
나는 그것을보고 싶지 않아, 거물이보고 싶어, 닭 요리입니다
public class Add_Two_Numbers {
public static void main(String[] args) {
ListNode a = new ListNode( 2 );
ListNode b = new ListNode( 4 );
ListNode c = new ListNode( 3 );
ListNode d = new ListNode( 5 );
ListNode e = new ListNode( 6 );
ListNode f = new ListNode( 7 );
a.next = b;
b.next = c;
d.next = e;
e.next = f;
ListNode o = addTwoNumbers( a, d );
while( o != null ) {
System.out.print( o.val );
o = o.next;
}
}
public static ListNode addTwoNumbers(ListNode l1, ListNode l2) {
ListNode first = new ListNode(0);
ListNode before = first;
int up = 0;
while( l1!=null || l2!=null || up!=0) {
if( l1!=null && l2!=null ) {
before.next = new ListNode( (l1.val + l2.val + up)%10 );
up = (l1.val + l2.val + up)/10;
l1 = l1.next;
l2 = l2.next;
}else if( l1==null && l2!=null ) {
before.next = new ListNode( (l2.val + up)%10 );
up = (l2.val + up)/10;
l2 = l2.next;
}else if( l1!=null && l2==null ) {
before.next = new ListNode( (l1.val + up)%10 );
up = (l1.val + up)/10;
l1 = l1.next;
}else if( l1==null && l2==null && up != 0 ) {
before.next = new ListNode( up );
up = 0;
}
before = before.next;
}
return first.next;
}
}
//节点
class ListNode {
int val;
ListNode next;
ListNode(int x) { val = x; }
}