题目链接
https://leetcode.com/problems/add-two-numbers/description/
题目理解:
给定两个链表,存储整形数据,返回相加的结果。第一个节点表示整数的个位,对应位置上值进行相加操作,中间涉及相加大于等于10时的进位。
需要会对链表的头结点,下一位及取值,存值,数组转换成链表存储等操作。
第一种解法-常规思路
优点:思路明了
缺点:运行速度慢,耗时
思路及源码如下,详见注释。
/** * 两个链表相加 * @param l1 链表1 * @param l2 链表2 * @return 相加之后的结果以为链表形式返回 */ public ListNode addTwoNumbers(ListNode l1, ListNode l2) { ListNode pointL1 = l1; ListNode pointL2 = l2; //新建两个指针节点指向链表头部节点 ListNode addResult = null; //新建空链表,存放相加的结果 ListNode paRes = addResult; //指向结果链表addResult的头部 int sum = 0; // 每一位相加结果存放,以及标识进位情况 //当两个链表其中一个不为null时,进行以下节点值相加,取余数,相除等操作 while (pointL1 != null || pointL2 != null) { //当链表1不为空时,将当前节点值加到sum if (pointL1 != null) { sum = sum + poi