您的位置:首页 > 职场人生

程序员面试金典 2.5 链式A+B

2016-02-24 15:30 591 查看

题目

有两个用链表表示的整数,每个结点包含一个数位。这些数位是反向存放的,也就是个位排在链表的首部。编写函数对这两个整数求和,并用链表形式返回结果。

给定两个链表ListNode* A,ListNode* B,请返回A+B的结果(ListNode*)。

我的题解

import java.util.*;
/*
public class ListNode {
int val;
ListNode next = null;

ListNode(int val) {
this.val = val;
}
}*/
public class Plus {
public ListNode plusAB(ListNode a, ListNode b) {
// write code here
int offset = 1;
int up = 0;
ListNode res = null;
ListNode cur = null;

while((a != null) && (b != null)) {
int sum = up;
up = 0;
sum += a.val + b.val;
if(sum >= 10) {
up = 1;
}
sum = sum % 10;
if(res == null) {
res = new ListNode(sum);
cur = res;
}else {
cur.next = new ListNode(sum);
cur = cur.next;
}
a = a.next;
b = b.next;
}

ListNode now = a != null?a:b;
while(now != null) {
int sum = up;
sum += now.val;
if(sum >= 10) {
up = 1;
}else up = 0;
sum = sum % 10;
cur.next = new ListNode(sum);
cur = cur.next;
now = now.next;
}
if(up != 0)
cur.next = new ListNode(up);

return res;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  class