加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

golang 算法题 : 两数相加

发布时间:2020-12-16 09:27:02 所属栏目:大数据 来源:网络整理
导读:package main import "fmt" type ListNode struct { Val int Next * ListNode } func main () { l1 := ListNode { Val: 1 , Next: ListNode { Val: 2 , Next: ListNode { Val: 3 , } , } l2 := ListNode { Val: 4 , Next: ListNode { Val: 5 , Next: ListNod
package main

import "fmt"

type ListNode struct {
Val int
Next *ListNode
}

func main() {
l1 := &ListNode{
Val: 1,
Next: &ListNode{
Val: 2,
Next: &ListNode{
Val: 3,
},
}
l2 := &ListNode{
Val: 4,
Next: &ListNode{
Val: 5,
Next: &ListNode{
Val: 6,
}
l3 := addTwoNumbers(l1,l2)
num := ""
for l3 != nil {
val := l3.Val
num = fmt.Sprintf("%s%d",num,val)
l3 = l3.Next
}
fmt.Println(num)
}

func addTwoNumbers(l1 *ListNode,l2 *ListNode) *ListNode {
var head *ListNode
var previous *ListNode
var current *ListNode
var carry int
for l1 != nil || l2 != nil {
v1 := 0
v2 := 0
if l1 != nil {
v1 = l1.Val
}
if l2 != nil {
v2 = l2.Val
}
result := v1 + v2 + carry
nodeVal := result % 10
carry = result / 10
current = &ListNode{
Val: nodeVal,
}
if head == nil {
head = current
}
if previous != nil {
previous.Next = current
}

previous = current

if l1 != nil {
l1 = l1.Next
}
if l2 != nil {
l2 = l2.Next
}

}

if carry > 0 {
current = &ListNode{
Val: carry,
}
if head == nil {
head = current
}
if previous != nil {
previous.Next = current
}
}

return head}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读