一、问题描述

给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。

如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。

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

示例:

输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)
输出:7 -> 0 -> 8
原因:342 + 465 = 807

二、go语言
1、方法一
// leetcode-2
package mainimport ("fmt"
)/*** Definition for singly-linked list.* type ListNode struct {*     Val int*     Next *ListNode* }*/type ListNode struct {Val  intNext *ListNode
}func addTwoNumbers(l1 *ListNode, l2 *ListNode) *ListNode {var head *ListNode = new(ListNode)var end *ListNode = headvar tmp1 *ListNode = l1var tmp2 *ListNode = l2var carry int = 0for tmp1 != nil && tmp2 != nil {sun := tmp1.Val + tmp2.Val + carryend.Next = new(ListNode)end = end.Nextend.Val = sun % 10carry = sun / 10tmp1 = tmp1.Nexttmp2 = tmp2.Next}for tmp1 != nil {sun := tmp1.Val + carryend.Next = new(ListNode)end = end.Nextend.Val = sun % 10carry = sun / 10tmp1 = tmp1.Next}for tmp2 != nil {sun := tmp2.Val + carryend.Next = new(ListNode)end = end.Nextend.Val = sun % 10carry = sun / 10tmp2 = tmp2.Next}if carry != 0 {end.Next = new(ListNode)end = end.Nextend.Val = carry}return head.Next
}
func main() {var l1 *ListNode = new(ListNode)var l2 *ListNode = new(ListNode)var tmp1 *ListNode = l1var tmp2 *ListNode = l2l1.Val = 9l2.Val = 4for i := 0; i < 10; i++ {tmp1.Next = new(ListNode)tmp1 = tmp1.Nexttmp1.Val = itmp2.Next = new(ListNode)tmp2 = tmp2.Nexttmp2.Val = i}sun := addTwoNumbers(l1, l2)fmt.Print("l1 = ")for l1 != nil {fmt.Printf("[%d]", l1.Val)l1 = l1.Next}fmt.Println("")fmt.Print("l2 = ")for l2 != nil {fmt.Printf("[%d]", l2.Val)l2 = l2.Next}fmt.Println("")fmt.Print("sun = ")for sun != nil {fmt.Printf("[%d]", sun.Val)sun = sun.Next}fmt.Println("")
}

输出结果:

l1 = [9][0][1][2][3][4][5][6][7][8][9]
l2 = [4][0][1][2][3][4][5][6][7][8][9]
sun = [3][1][2][4][6][8][0][3][5][7][9][1]

【leetcode】力扣刷题(2):两数相加(go语言)相关推荐

  1. leetCode刷题 2. 两数相加

    原题链接: leetcode-cn.com/problems/ad- 题目描述 给定两个非空链表来表示两个非负整数.位数按照逆序方式存储,它们的每个节点只存储单个数字.将两数相加返回一个新的链表. 你 ...

  2. leetcode力扣刷题系列python——2、两数相加

    题目: 给出两个 非空 的链表用来表示两个非负的整数.其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字. 如果,我们将这两个数相加起来,则会返回一个新的链表来表示 ...

  3. IDEA LeetCode力扣刷题插件 中文类名 模板

    在用idea力扣插件刷题时,用中文作为类名会出现空格或者其他符号,总所周知,变量名和类名是不能出现空格和其他符号的,在我查阅了官方文档后,发现模板的工具类是继承了Stringutils的,所以在代码模 ...

  4. LeetCode力扣刷题数据库(178):分数排名

    178分数排名 表: Scores +-------------+---------+ | Column Name | Type | +-------------+---------+ | id | ...

  5. leetcode(力扣)刷题题解网站

    中文题解直接看力扣的题解 如果想要看国外大神的相关题解,只需要将中文题解网址中的'-cn' 去掉即可 英文题解网址: https://leetcode.com/problems/binary-tree ...

  6. LeetCode力扣刷题——居合斩!二分查找

    二分查找 一.算法解释         二分查找也常被称为二分法或者折半查找,每次查找时通过将待查找区间分成两部分并只取 一部分继续查找,将查找的复杂度大大减少.对于一个长度为 O ( n ) 的数组 ...

  7. LeetCode力扣刷题——千奇百怪的排序算法

    排序算法 一.常见的排序算法         以下是一些最基本的排序算法.虽然在 C++ 里可以通过 std::sort() 快速排序,而且刷题时很少需要自己手写排序算法,但是熟习各种排序算法可以加深 ...

  8. 学渣的刷题之旅 leetcode刷题 2. 两数相加

    给出两个非空的链表用来表示两个非负的整数.其中,它们各自的位数是按照 逆序的方式存储的,并且它们的每个节点只能存储一位数字. 如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和. 您可以 ...

  9. LeetCode力扣刷题——巧解数学问题

    数论 一.引言         对于 LeetCode 上数量不少的数学题,我们尽量将其按照类型划分讲解.然而很多数学题的解法并不通用,我们也很难在几道题里把所有的套路讲清楚,因此我们只选择了几道经典 ...

  10. Leetcode力扣刷题

    704. 二分查找 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1. clas ...

最新文章

  1. python 中evaluationcontext是什么_Pytorch evaluation每次运行结果不同的解决
  2. Spring Boot2.x-03Spring Boot基础
  3. 2019年湘潭大学程序设计竞赛(重现赛)
  4. python基础课程_2学习笔记3:图形用户界面
  5. 领域应用 | 偷偷告诉你,那些二次元萌妹都有个叫知识图谱的爸爸
  6. Linux下apache+php+mysql配置攻略
  7. java动画api_使用MMAPI播放gif动画
  8. 攻防世界 pwn 二进制漏洞简单题练习区 答题(1-10题解)
  9. 关于C#对Excel导出时对整行的操作
  10. 进程优先级,进程nice值和%nice的解释
  11. 拓端tecdat|R语言圆填充( Circle packing)算法圆堆图圆形空间填充算法可视化
  12. 初识THINKPHP--关于路径的问题(xampp下的htdocs为根目录)
  13. npstion实现通过手机扫描二维码向电脑录入信息
  14. C#操作-LX3600非接触式IC卡读写器
  15. 行贿罪、受贿罪刑事辩护6大要点
  16. andriod获取带字母的iccid
  17. 90后,为什么我建议你不要老是加班?
  18. 人生四大铁:一起同过窗,一起扛过枪,一起嫖过娼,一起分过赃。
  19. 《产品设计与开发(原书第5版)》——2.6 产品开发组织
  20. linux查找错误,查找LinuxIP错误

热门文章

  1. 【opencv】(1) 基础操作:图像视频读取、图像截取、颜色通道
  2. C++中stl使用过程中的一些tips
  3. Blender钢铁机器人建模与动画全流程制作视频教程
  4. C++ std::function<void(int)> 和 std::function<void()> 作为函数参数的注意事项
  5. C++ 从双重检查锁定问题 到 内存屏障的一些思考
  6. 二分法:search insert position 插入位置
  7. s-sed(stream editor) 文本填充和编辑 基本使用
  8. 缓冲区和数组的输入输出问题
  9. portscaner 多线程、多协程并发端口扫描
  10. 触控(Touch) 、 布局(Layout)