題目
給你兩個(gè) 非空 的鏈表对省,表示兩個(gè)非負(fù)的整數(shù)。它們每位數(shù)字都是按照 逆序 的方式存儲(chǔ)的晾捏,并且每個(gè)節(jié)點(diǎn)只能存儲(chǔ) 一位 數(shù)字蒿涎。
請(qǐng)你將兩個(gè)數(shù)相加,并以相同形式返回一個(gè)表示和的鏈表
你可以假設(shè)除了數(shù)字 0 之外惦辛,這兩個(gè)數(shù)都不會(huì)以 0 開(kāi)頭
輸入:l1 = [2,4,3], l2 = [5,6,4]
輸出:[7,0,8]
解釋:342 + 465 = 807.
輸入:l1 = [0], l2 = [0]
輸出:[0]
輸入:l1 = [9,9,9,9,9,9,9], l2 = [9,9,9,9]
輸出:[8,9,9,9,0,0,0,1]
提示:
- 每個(gè)鏈表中的節(jié)點(diǎn)數(shù)在范圍 [1, 100] 內(nèi)
- 0 <= Node.val <= 9
- 題目數(shù)據(jù)保證列表表示的數(shù)字不含前導(dǎo)零
個(gè)人解答
/**
* @param {ListNode} l1
* @param {ListNode} l2
* @return {ListNode}
*/
const addTwoNumbers = function(l1, l2) {
// 將類數(shù)組轉(zhuǎn)為數(shù)組
l1 = Array.prototype.slice.call(l1, 0)
l2 = Array.prototype.slice.call(l2, 0)
const rl1 = l1.reverse()
const rl1Number = Number(rl1.join(''))
const rl2 = l2.reverse()
const rl2Number = Number(rl2.join(''))
const total = (rl1Number + rl2Number) + ''
const totalArray = total.split('').map(Number).reverse()
console.log('totalArray', totalArray)
return totalArray
}
const l1 = [2,4,3]
const l2 = [9,9,9,9]
addTwoNumbers(l1, l2)
LeetCode別人解析
/**
* @param {ListNode} l1
* @param {ListNode} l2
* @return {ListNode}
*/
var addTwoNumbers = function(l1, l2) {
let addOne = 0
let sum = new ListNode('0')
let head = sum
while (addOne || l1 || l2) {
let val1 = l1 !== null ? l1.val : 0
let val2 = l2 !== null ? l2.val : 0
let r1 = val1 + val2 + addOne
addOne = r1 >= 10 ? 1 : 0
sum.next = new ListNode(r1 % 10)
sum = sum.next
if (l1) l1 = l1.next
if (l2) l2 = l2.next
}
return head.next
};
問(wèn)題:我使用的是Js的思路進(jìn)行的數(shù)據(jù)處理劳秋,但是實(shí)際在LeetCode中無(wú)法運(yùn)行成功,而我使用了解析里面的方法胖齐,在純js環(huán)境下是無(wú)法運(yùn)行的玻淑,所以還是貼出自己的解析和LeetCode里面別人的解析
來(lái)源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/add-two-numbers