思路

  1. 模拟加法:链表存储的是逆序数位,因此从头节点开始,逐位相加可以模拟正常的加法。每两个节点的值相加,并记录进位。

  2. 逐节点相加

    • 创建一个新的链表,用于存储结果,每次将两个链表对应节点的值加上进位值,结果存储到新链表的节点中。
    • 计算过程中,将(l1.Val + l2.Val + carry)相加的结果拆成两个部分,一部分是当前位的值,另一部分是进位值(例如:(l1.Val + l2.Val + carry) / 10)。
  3. 处理进位:若最终计算完链表后进位不为0,则在结果链表末尾增加一个新节点表示进位。

  4. 边界条件:若链表长度不一,则将缺少的部分视为0;同时确保最后若存在进位,将其单独处理。

代码


type ListNode struct {
Val int
Next *ListNode
} func addTwoNumbers(l1 *ListNode, l2 *ListNode) (head *ListNode) {
var tail *ListNode
carry := 0
for l1 != nil || l2 != nil {
var val1, val2 int
if l1 != nil {
val1 = l1.Val
l1 = l1.Next
}
if l2 != nil {
val2 = l2.Val
l2 = l2.Next
}
sum := val1 + val2 + carry
sum, carry = sum%10, sum/10
if head == nil {
head = &ListNode{sum, nil}
tail = head
} else {
tail.Next = &ListNode{sum, nil}
tail = tail.Next
}
if l1 == nil && l2 != nil {
tail.Next = l2
break
}
if l1 != nil && l2 == nil {
tail.Next = l1
break
}
}
if carry > 0 {
tail.Next = &ListNode{carry, nil}
}
return
}

20241107,LeetCode 每日一题,使用 Go 计算两数相加的更多相关文章

  1. LeetCode题解【题2】:两数相加

    原题链接:https://leetcode-cn.com/problems/add-two-numbers/ 查看请另起链接打开. 解题思路执行用时 :2 ms, 在所有 Java 提交中击败了99. ...

  2. Leetcode算法系列(链表)之两数相加

    Leetcode算法系列(链表)之两数相加 难度:中等给出两个 非空 的链表用来表示两个非负的整数.其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字.如果,我们将 ...

  3. 【LeetCode每天一题】Two Sum(两数之和)

    Given an array of integers, return indices of the two numbers such that they add up to a specific ta ...

  4. leetcode 刷题(2)--- 两数相加

    给定两个非空链表来表示两个非负整数.位数按照逆序方式存储,它们的每个节点只存储单个数字.将两数相加返回一个新的链表. 你可以假设除了数字 0 之外,这两个数字都不会以零开头. 示例: 输入:(2 -& ...

  5. Leetcode 445. 两数相加 II

    1.题目描述 给定两个非空链表来代表两个非负整数.数字最高位位于链表开始位置.它们的每个节点只存储单个数字.将这两数相加会返回一个新的链表. 你可以假设除了数字 0 之外,这两个数字都不会以零开头. ...

  6. 【JavaScript】【dp】Leetcode每日一题-解码方法

    [JavaScript]Leetcode每日一题-解码方法 [题目描述] 一条包含字母 A-Z 的消息通过以下映射进行了 编码 : 'A' -> 1 'B' -> 2 ... 'Z' -& ...

  7. 【JavaScript】【KMP】Leetcode每日一题-实现strStr()

    [JavaScript]Leetcode每日一题-实现strStr() [题目描述] 实现 strStr() 函数. 给你两个字符串 haystack 和 needle ,请你在 haystack 字 ...

  8. [LeetCode每日一题]153.寻找旋转排序数组中的最小值

    [LeetCode每日一题]153.寻找旋转排序数组中的最小值 问题 已知一个长度为 n 的数组,预先按照升序排列,经由 1 到 n 次 旋转 后,得到输入数组.例如,原数组 nums = [0,1, ...

  9. 【python】Leetcode每日一题-打家劫舍2

    [python]Leetcode每日一题-打家劫舍2 [题目描述] 你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金.这个地方所有的房屋都 围成一圈 ,这意味着第一个房屋和最后一个房屋 ...

  10. 【python】Leetcode每日一题-直方图的水量(接雨水)

    [python]Leetcode每日一题-直方图的水量(接雨水) [题目描述] 给定一个直方图(也称柱状图),假设有人从上面源源不断地倒水,最后直方图能存多少水量?直方图的宽度为 1. 上面是由数组 ...

随机推荐

  1. css漂亮的弧形

    我们有时会遇到要用实现一个弧形,而这样的弧形要怎么实现呢? 用图片?好像不大现实,因为这样就要无故多加载一张图片了 ,这里我们来说说怎么用css的after伪类来实现弧形. 如果想要调整弧度的话,可以 ...

  2. DeepSeek 不再卡顿,从此告别服务器繁忙,请稍后再试(建议收藏!)

    大家好,我是六哥. 由于DeepSeek真的太火了,也许你也跟我一样,常会遇到这样的情况: 真的让人抓狂,10条回复里常常有9条是"服务器blabla,请稍后重试",看到这话,就问 ...

  3. dotnet CLI推送Nuget

    前提: 准备好要发布的包 选择一个打包工具,可以是dotnet CLI.nuget.exe CLI.MSBuild 准备好Nuget官方API Key 自述文件   先必须添加Readme.md到项目 ...

  4. GridControl 给选中的行添加边框显示

    实现方式,通过自定义 RowControl 的样式实现. 参考:https://supportcenter.devexpress.com/ticket/list?searchString=RowCel ...

  5. Django setting可以配置什么?

    Setting配置信息 注册子应用 # 注意:需要修改Django的全局配置文`settings.py`'''1. 创建子应用 1)在pycharm中创建 python manage.py start ...

  6. [HAOI2018] 染色 题解

    第一眼肯定想到容斥.设 \(G(k)\) 表示至少有 \(k\) 种颜色符合要求,\(F(k)\) 表示恰好有 \(k\) 种颜色符合要求.显然 \(k\) 的上界 \(t=\min(m,\lfloo ...

  7. 用于敏捷开发的最佳免费 UML 工具 2022

    Table of Contents  hide  1 最好的在线免费 UML图工具 2 免费的 UML Visual Paradigm 在线平台 3 其他福利 4 用于正式和大规模可视化建模的 Vis ...

  8. day3-运算符

    基本概念 运算符是一种特殊的符号,用于表示数据的运算.赋值.比较等 算数运算符 赋值运算符 比较运算符/关系运算符 逻辑运算符 位运算 其他运算符 算数运算符 对数值类型的变量进行运算 /基本运算,如 ...

  9. ccrc 评审资料该如何编写【通用型】

    核心思路:各个过程中和安全检查内容进行对应 首先应该有信息安全服务规范 其次准备好平时项目的所有文档 第三,参照规范内容,每一项要求[准备.需求.设计.编码.测试.验收.维保]在原有文档上进行筛选和补 ...

  10. wxpython-窗体关闭

    ` def close(self, event): wx.Exit() `