题目:
题解:
根据题目(2->4->3)+(5->6->4) = (7->0->8),根据加法的计算过程我们知道首先从低位开始算起,也就是说应该先计算2+5=7;4+6=10,向前进一位,此处取余数0;3+4+进一位的1 = 8;所以答案是 7->0->8。最关键的是最后的进位一定要记得,如果最后相加的和需要进位!!!
解题代码:
/**
* Definition for singly-linked list.
* function ListNode(val, next) {
* this.val = (val===undefined ? 0 : val)
* this.next = (next===undefined ? null : next)
* }
*/
/**
* @param {ListNode} l1
* @param {ListNode} l2
* @return {ListNode}
*/
var addTwoNumbers = function(l1, l2) {
let prevhead = new ListNode(0);
let current = prevhead;
let carry = 0;
while(l1 !== null || l2 !== null){
let x = l1 !== null ? l1.val : 0;
let y = l2 !== null ? l2.val : 0;
let add = x + y + carry;
carry = Math.floor(add / 10);
current.next = new ListNode(add % 10);
current = current.next;
if(l1 !== null) l1 = l1.next;
if(l2 !== null) l2 = l2.next;
}
if(carry > 0){
current.next = new ListNode(carry);
}
return prevhead.next;
};
散落知识点:
new ListNode是干什么的?
用来生成链表的节点,节点间的连接通过next属性指向下一个节点
Math.floor()?
Math.floor() 函数是 JavaScript 中的一个内置数学函数,用于向下取整,即返回小于或等于给定数字的最大整数。换句话说,它会将数字的小数部分截去,只保留整数部分,并且如果数字本身是整数,则直接返回该整数。如果数字是负数,Math.floor() 会向更小的负数方向取整。
console.log(Math.floor(4.7)); // 输出: 4
console.log(Math.floor(4.3)); // 输出: 4
console.log(Math.floor(-4.7)); // 输出: -5
console.log(Math.floor(-4.3)); // 输出: -5
console.log(Math.floor(4)); // 输出: 4(对于整数,直接返回)