继续刷LeetCode,做做脑力运动,今天继续使用go来做开发,随机刷了一道编号2的题:Add Two Numbers,中文名叫两数相加,难度:中等。
题目偏简单了,就当熟悉go语言规范了,循环结构和条件语句不熟悉。
官方一共1563个case,放一个最终结果吧
执行用时 : 8 ms, 在所有 Go 提交中击败了 93.47% 的用户 内存消耗 : 5 MB, 在所有 Go 提交中击败了 13.79% 的用户
详细信息参考这里 两数相加 - 提交记录 - 力扣 (LeetCode) ,内存占比有点出乎意料。
再去英文版检查一下
Runtime: 16 ms, faster than 19.73% of Go online submissions for Add Two Numbers. Memory Usage: 5 MB, less than 32.49% of Go online submissions for Add Two Numbers.
详细信息参考这里 Add Two Numbers - Submission Detail - LeetCode ,中国的提交数量是全球的22%左右。
package main
/**
* Definition for singly-linked list.
* type ListNode struct {
* Val int
* Next *ListNode
* }
*/
func addTwoNumbers(l1 *ListNode, l2 *ListNode) *ListNode {
var result *ListNode = new(ListNode)
var i1, i2, r = l1, l2, result
var p *ListNode
var j = 0
for i1 != nil || i2 != nil {
if p != nil {
p.Next = r
}
var s = j
if i1 != nil {
s += i1.Val
i1 = i1.Next
}
if i2 != nil {
s += i2.Val
i2 = i2.Next
}
r.Val = s % 10
j = s / 10
i1 = i1.Next
i2 = i2.Next
p = r
r = new(ListNode)
r.Val = 0
}
if j > 0 {
if p != nil {
p.Next = r
}
r.Val = j
}
return result
}
这个题目不太好本地试验测试用例,暂时略过。
收获
主要是语法上的学习:
- for loop
- 条件语句
- 指针