2.两数相加

时游大约 1 分钟LeetCode

2.两数相加

/*
 * @lc app=leetcode.cn id=2 lang=typescript
 *
 * [2] 两数相加
 */

// @lc code=start
/**
 * Definition for singly-linked list.
 * 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)
 *     }
 * }
 */

function addTwoNumbers(
	l1: ListNode | null,
	l2: ListNode | null
): ListNode | null {
	// 初始化节点数组
	let result: ListNode[] = [];
	// 定义下一节点+值
	let val = 0;
	let l1_next = l1;
	let l2_next = l2;
	while (true) {
		// 先将上一轮值添加
		let arr = [0, 0, val];
		// 获取l1_next、l2_next的值
		if (l1_next) {
			arr[0] = l1_next.val;
			l1_next = l1_next.next;
		}
		if (l2_next) {
			arr[1] = l2_next.val;
			l2_next = l2_next.next;
		}
		let sum = 0;
		for (let i = 0; i < 3; i++) {
			sum += arr[i];
		}
		if (sum >= 10) {
			val = 1;
			result.push(new ListNode(sum - 10));
		} else {
			result.push(new ListNode(sum));
			val = 0;
		}

		if (l1_next == null && l2_next == null) {
			if (val == 1) {
				result.push(new ListNode(1));
			}
			break;
		}
	}
	console.log(result);
	result.map((el, index) => {
		if (index < result.length - 1) {
			el.next = result[index + 1];
		} else {
			el.next = null;
		}
	});

	return result[0];
}

// let node1 = new ListNode(9);
// let node2 = new ListNode(9);
// let node3 = new ListNode(9);
// let node4 = new ListNode(9);
// let node5 = new ListNode(9);
// let node6 = new ListNode(9);
// let node7 = new ListNode(9);

// let node8 = new ListNode(9);
// let node9 = new ListNode(9);
// let node10 = new ListNode(9);
// let node11 = new ListNode(9);

// node1.next = node2;
// node2.next = node3;
// node3.next = node4;
// node4.next = node5;
// node5.next = node6;
// node6.next = node7;

// node8.next = node9;
// node9.next = node10;
// node10.next = node11;

// addTwoNumbers(node1, node8);

// let node1 = new ListNode(1);
// let node2 = new ListNode(0);
// let node3 = new ListNode(0);
// let node7 = new ListNode(0);
// let node8 = new ListNode(0);
// let node9 = new ListNode(0);
// let node10 = new ListNode(0);
// let node11 = new ListNode(0);
// let node12 = new ListNode(0);
// let node13 = new ListNode(1);

// let node4 = new ListNode(5);
// let node5 = new ListNode(6);
// let node6 = new ListNode(4);

// // 创建四个节点,构建两条链表
// node1.next = node2;
// node2.next = node3;
// node2.next = node3;
// node3.next = node7;
// node7.next = node8;
// node8.next = node9;
// node9.next = node10;
// node10.next = node11;
// node11.next = node12;
// node12.next = node13;
// // 链表2
// node4.next = node5;
// node5.next = node6;

// addTwoNumbers(node1, node4);
// @lc code=end

上次编辑于:
贡献者: 15327360835
Loading...