LeetCode 两数相加
程序员文章站
2022-05-21 08:19:47
...
先设计两个函数
第一个数组转链表
第二个链表转数组
整体思路为先把传入的两个链表转成数组,执行加法运算之后将结果转成链表输出。
AC代码
var addTwoNumbers = function(l1, l2) {
function node2arr(listNode) {
let arr = []
do {
arr.push(listNode.val)
listNode = listNode.next
} while (listNode)
return arr.reverse()
}
function arr2listnode(arr) {
let head = new ListNode(arr[0])
let point = head
let i = 1
while (i != arr.length) {
point.next = new ListNode(arr[i])
point = point.next
i++
}
return head
}
if (l1.next == null && l1.val == 0)
return l2
else if (l2.next == null && l2.val == 0)
return l1
else {
let arr_1 = node2arr(l1)
let arr_2 = node2arr(l2)
let length = Math.abs(arr_1.length-arr_2.length)
if (arr_1.length > arr_2.length)
for (let i = 0; i < length; i++)
arr_2.unshift(0)
else if(arr_2.length>arr_1.length)
for (let i = 0; i < length; i++)
arr_1.unshift(0)
let result = []
let flag = 0
for (let i = arr_1.length - 1; i >= 0; i--) {
let sum = arr_1[i] + arr_2[i] + flag
result.push(sum >= 10 ? sum - 10 : sum)
flag = sum >= 10 ? 1 : 0
}
if (flag == 1)
result.push(flag)
return arr2listnode(result)
}
};
上一篇: 计算球的体积