首页 > 其他分享 >leetcode-2. 两数相加

leetcode-2. 两数相加

时间:2022-11-01 13:22:35浏览次数:46  
标签:相加 next 链表 let l1 carry l2 leetcode

题目描述

给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。

请你将两个数相加,并以相同形式返回一个表示和的链表。

你可以假设除了数字 0 之外,这两个数都不会以 0 开头。

示例:
image

注意事项

不考虑任何特殊情况,我们只需要同时遍历链表,将他们的每一项加起来 构造成新链表即可
但是,存在着一些特殊情况。比如:进位、两个链表的长度不一样。
对于链表的长度不一样我们可以在累加之前先进行判断,如果节点为null则将其设置为0
对于进位的处理,我们可以外置一个进位参数,判断每次是否有进位,有的话则与两个节点的值相加

参考代码

//方法一:
 var addTwoNumbers = function(l1,l2) {
     let head = new ListNode(null)
     let current = head
     let carry = 0
     while(carry || l1 || l2) {
         let v1 = l1?l1.val:0
         let v2 = l2?l2.val:0
         let sum = v1+v2+carry
         carry = Math.floor(sum/10)
         current.next = new ListNode(sum%10)
         current = current.next
         l1 = l1 ? l1.next : null
         l2 = l2 ? l2.next :null
     }
     return head.next
 }
 //方法二:
 var addTwoNumbers = function (l1, l2) {
  // 进位数
  let carry = 0
  // 哨兵节点
  let preNode = new ListNode(-1)
  let currentNode = preNode
  while (l1 || l2) {
    // 当前位的数值和
    let sum = ((l1 && l1.val) || 0) + ((l2 && l2.val) || 0) + carry
    carry = Math.floor(sum / 10)
    let value = sum % 10
    currentNode.next = new ListNode(value)
    currentNode = currentNode.next
    l1 = l1 && l1.next
    l2 = l2 && l2.next
  }

  if (carry) {
    currentNode.next = new ListNode(carry)
  }

  return preNode.next
}

标签:相加,next,链表,let,l1,carry,l2,leetcode
From: https://www.cnblogs.com/zx529/p/16847345.html

相关文章

  • LeetCode 236. 二叉树的最近公共祖先 - 回溯的理解
    题目https://leetcode.cn/problems/lowest-common-ancestor-of-a-binary-tree/思路自己做只摸到一些门道,还是靠随想录...代码:deflowestCommonAncestor(self,root:'......
  • LeetCode_144_二叉树的前序遍历
    题目描述:给定一个二叉树,返回它的前序遍历。示例:输入:[1,null,2,3]1\2/3输出:[1,2,3]进阶:递归算法很简单,你可以通过迭代算法完成吗?递归的写法......
  • LeetCode_572_另一个树的子树
    题目描述:给定两个非空二叉树s和t,检验s中是否包含和t具有相同结构和节点值的子树。s的一个子树包括s的一个节点和这个节点的所有子孙。s也可以看做它自身的一棵子......
  • LeetCode_617_合并二叉树
    题目描述:给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠,那么将他......
  • LeetCode_637_二叉树的层平均值
    题目描述:给定一个非空二叉树,返回一个由每层节点平均值组成的数组.示例1:输入:3/\920/\157输出:[3,14.5,11]解释:第0层的平均值是3,第1层......
  • LeetCode_653_两数之和 IV - 输入 BST
    题目描述:给定一个二叉搜索树和一个目标结果,如果BST中存在两个元素且它们的和等于给定的目标结果,则返回true。案例1:输入:5/\36/\\247Target=......
  • LeetCode_16. 最接近的三数之和
    题目描述:给定一个包括n个整数的数组nums和一个目标值target。找出nums中的三个整数,使得它们的和与target最接近。返回这三个数的和。假定每组输入只存在唯一答案......
  • LeetCode_669_修剪二叉搜索树
    题目描述:给定一个二叉搜索树,同时给定最小边界L和最大边界R。通过修剪二叉搜索树,使得所有节点的值在[L,R]中(R>=L)。你可能需要改变树的根节点,所以结果应当返回修剪好的......
  • Leetcode第1662题:检查两个字符串数组是否相等(Check if two string arrays are equival
    解题思路输入是两个字符串数组,包含的元素数目不一定相同,每个元素包含的字符数目也不一定相同。使用两个指针p和i分别记录遍历的元素位置和字符位置。指针p1和p2分别表示......
  • 数据结构 玩转数据结构 5-2 测试自己的Leetcode链表代码
    0课程地址https://coding.imooc.com/lesson/207.html#mid=13434 1重点关注1.1leetCode的代码 如何本地调试详见3.1 1.2遗忘的......