leetcode: #2 两数相加
采用Java实现。
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode() {}
* ListNode(int val) { this.val = val; }
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
* }
*/
class Solution {
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
ListNode pointer1 = l1;
ListNode pointer2 = l2;
int sumOfRemainder = 0;
int carryOfNumber = 0;
ListNode headNode = new ListNode();
ListNode currentNode = headNode;
while(pointer1 != null && pointer2 !=null) {
sumOfRemainder = (carryOfNumber + pointer1.val + pointer2.val) % 10;
carryOfNumber = (carryOfNumber + pointer1.val + pointer2.val) / 10;
ListNode tempNode = new ListNode(sumOfRemainder);
currentNode.next = tempNode;
currentNode = tempNode;
pointer1 = pointer1.next;
pointer2 = pointer2.next;
}
while(pointer1 != null) {
sumOfRemainder = (carryOfNumber + pointer1.val) % 10;
carryOfNumber = (carryOfNumber + pointer1.val) / 10;
ListNode tempNode = new ListNode(sumOfRemainder);
currentNode.next = tempNode;
currentNode = tempNode;
pointer1 = pointer1.next;
}
while(pointer2 != null) {
sumOfRemainder = (carryOfNumber + pointer2.val) % 10;
carryOfNumber = (carryOfNumber + pointer2.val) / 10;
ListNode tempNode = new ListNode(sumOfRemainder);
currentNode.next = tempNode;
currentNode = tempNode;
pointer2 = pointer2.next;
}
if(carryOfNumber != 0) {
ListNode tempNode = new ListNode(carryOfNumber);
currentNode.next = tempNode;
}
return headNode.next;
}
}