题目描述
假设链表中每一个节点的值都在 0 - 9 之间,那么链表整体就可以代表一个整数。
给定两个这种链表,请生成代表两个整数相加值的结果链表。
例如:链表 1 为 9->3->7,链表 2 为 6->3,最后生成新的结果链表为 1->0->0->0。
思路
1.加法一定时从低位到高位进行的,所以需要反转链表。
2.用两个指针分别指向链表头部,从前向后遍历。遍历过程中将两个指针指向的节点数值相加,并生成新的节点。
3.注意进位的问题。每一轮的节点值=当前两个节点值之和%10+上一位的进位(0或1)。特别是如果最高位有进位(结果链表长度大于两个加数链表长度的最大值),需要新生成一个节点,且节点值为1(最高位)。
4.求解完之后注意把链表再次反转才是最终答案。
代码实现
import java.util.*;
/*
* public class ListNode {
* int val;
* ListNode next = null;
* }
*/
public class Solution {
/**
*
* @param head1 ListNode类
* @param head2 ListNode类
* @return ListNode类
*/
public ListNode addInList (ListNode head1, ListNode head2) {
// write code here
if(head1 == null){
return head2;
}
if<