题解 | #链表相加(二)# 先将链表转换成数组,然后大数运
链表相加(二)
https://www.nowcoder.com/practice/c56f6c70fb3f4849bc56e33ff2a50b6b
/*class ListNode {
* val: number
* next: ListNode | null
* constructor(val?: number, next?: ListNode | null) {
* this.val = (val===undefined ? 0 : val)
* this.next = (next===undefined ? null : next)
* }
* }
*/
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param head1 ListNode类
* @param head2 ListNode类
* @return ListNode类
*/
export function addInList(head1: ListNode, head2: ListNode): ListNode {
// write code here
let [h1, h2] = [head1, head2];
let [arr1, arr2] = [[], []];
function CreatArr(arr: number[], node: ListNode) {
while (node) {
arr.push(node.val);
node = node.next || null;
}
arr.reverse();
}
CreatArr(arr1, h1);
CreatArr(arr2, h2);
let carry = 0;
let len = Math.max(arr1.length, arr2.length);
let res = [];
for (let i = 0; i < len; i++) {
let num = (arr1[i] || 0) + (arr2[i] || 0) + carry;
res[i] = num % 10;
carry = Math.floor(num / 10);
}
if (carry > 0) {
res.push(carry);
}
res.reverse();
let newHead = new ListNode(res[0]);
let node = newHead
for (let i = 1; i < res.length; i++) {
node.next = new ListNode(res[i])
node = node.next
}
return newHead
}

查看5道真题和解析
凡岛公司福利 263人发布