题解 | #链表相加(二)# 先将链表转换成数组,然后大数运

链表相加(二)

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

}

全部评论

相关推荐

12-20 11:21
复旦大学 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务