タイトル
次の2つの非負の整数を表す2つの非空のリンクリストを与えています。数字は逆の順序で保存され、それらのノードの各々は、単一の数字を含みます。2つの数値を追加し、リンクリストとしてそれを返します。
次の2つの数字が数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; }
}