ListNode
ListNode是一种用于表示链表节点的类,在 JavaScript 中通常用于实现单链表或双链表等数据结构。链表是一种动态数据结构,其中每个节点包含数据和一个指向下一个节点的引用。以下是ListNode在 JavaScript 中的用法以及一些常见操作示例。
class ListNode{
constructor(val = 0, next = null) {
this.val = val; // 节点的值
this.next = next; // 指向下一个节点的指针(引用)
}
}
val: 存储节点的值。next: 指向下一个节点的引用,如果没有下一个节点,则为null。
题目
- 给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。
输入: l1 = [2,4,3], l2 = [5,6,4]
输出: [7,0,8]
解释: 342 + 465 = 807
解答
/**
* 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 addOne = 0 //进位
let num = new ListNode('0') // 创建一个头链表用于保存结果
let head = num // 保存头链表的位置用于最后的链表返回
while (l1 || l2 || addOne) { //在进位或者两个链表之中有一个存在的前提下执行下面的逻辑
let val1 = l1 === null ? 0 : l1.val
let val2 = l2 === null ? 0 : l2.val
let r1 = val1 + val2 + addOne
addOne = r1 >= 10 ? 1 : 0
num.next = new ListNode(r1 % 10)
num = num.next
if (l1) l1 = l1.next
if (l2) l2 = l2.next
}
return head.next
};