Leetcode #2. Add Two Numbers
简单来说就是要做两个链结的加总
ex.1
Input: list 1: 2->4->3, list 2: 5->6->4
Output: [7,0,8]
342 + 465 = 807 (个位数在链结的最左边)
如果你没做过这题,强烈建议你先思考一下怎麽解。
防雷
防雷
防雷
这一题主要让你熟悉链结的操作,只要搞懂了链结,花点时间就可以写出来。
只要每一次加总,处理一下进位,应该就可以解决了,时间复杂度为O(n)
程序:
func addTwoNumbers(l1 *ListNode, l2 *ListNode) *ListNode {
node := &ListNode{}
temp := node
curry := 0 // 记录有没有进位
for {
// 两个链结长度可能不一样,只要一边有东西,还是要加总下去
if l1 == nil && l2 == nil {
break
}
num := 0
if l1 != nil {
num += l1.Val
l1 = l1.Next
}
if l2 != nil {
num += l2.Val
l2 = l2.Next
}
// 判断进位
num += curry
if num >= 10 {
num = num % 10
curry = 1
} else {
curry = 0
}
temp.Next = &ListNode{
Val: num,
}
temp = temp.Next
}
if curry == 1 {
temp.Next = &ListNode{
Val: 1,
}
}
return node.Next
}
明天来讲Queue & Stack!
<<: [Day 04 - CSS] 网页长这样能看吗,CSS魔术Show
Microsoft Cloud App Security是一种云端存取安全性代理人(CASB), 可...
当前置必要安装工具用好後,就可以在本机搭建 Hexo 部落格啦!安装过程会使用到指令,所以我们要打开...
Aloha!又是我少女人妻 Uerica!今天我家狗狗总算没有一大早叫我起床了,可能之前累爆昨夜一路...
有关函式的基础介绍 可参考我之前发的文章 https://ithelp.ithome.com.tw/...
目前嵌入式软件,大部分都是烧录在DDR或SDRAM上面,过去的韧体烧录,非常麻烦,常常会失败,目前大...