两数之和是一个链表题,假设例题为[9,4,3] [5,6,4]
则输入[4,1,8]
,其实就是左边相加,遇10进1的解法
/**
* Definition for singly-linked list.
* function ListNode(val) {
* this.val = val;
* this.next = null;
* }
*/
/**
* @param {ListNode} l1
* @param {ListNode} l2
* @return {ListNode}
*/
var addTwoNumbers = function(l1, l2) {
//新建一个空列表去管理结果
let list = new ListNode(0)
//考虑到某一位相加会大于10 将大于10 进1 保存起来
let carry = 0
//保存头链表的位置用于最后的链表返回
let hear = list
//循环l1和l2 如果有进位的话则继续执行循环
while(l1||l2||carry){
//因为有长度不一致的情况,长度不一致则强行补0
let val1 = l1?l1.val:0
let val2 = l2?l2.val:0
let count = val1+val2+carry // 进行求和
//判断是否有进位
carry = count>=10?1:0
list = list.next = new ListNode(count % 10)
//未结束 则循环执行
if(l1) l1 = l1.next
if(l2) l2 = l2.next
}
return hear.next
};