題目地址 https://leetcode-cn.com/problems/add-two-numbers/git
時間複雜度O(n) 空間複雜度O(n)github
var addTwoNumbers = function(l1, l2) { // 定義一個虛擬頭節點,加入虛擬頭節點的目的主要是避免在鏈表中添加節點時區分是不是頭節點 // 好比這裏若是不用頭節點,咱們就得區分curr節點是否爲空,若是爲空拿curr直接賦值 // 若是不爲空,須要對curr.next進行賦值 const dummyHead = new ListNode(null) let curr =dummyHead let carry = 0 while (l1 !== null || l2 !== null || carry === 1) { const num1 = l1 === null ? 0 : l1.val const num2 = l2 === null ? 0 : l2.val const sum = num1 + num2 + carry // 這裏是整個循環最重要的兩步 // 1. 將當前節點的next指向新的節點 // 2. 移動curr指針到下一個節點 curr.next = new ListNode(sum % 10) curr = curr.next l1 = l1 === null ? null : l1.next l2 = l2 === null ? null : l2.next carry = sum >= 10 ? 1 : 0 } return dummyHead.next };
更多leetcode題解和數據結構方面的知識,請關注個人github:https://github.com/GuoLizhi/數據結構