178 lines
3.1 KiB
Go
178 lines
3.1 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
)
|
|
|
|
type ListNode struct {
|
|
Val int
|
|
Next *ListNode
|
|
}
|
|
|
|
func main() {
|
|
|
|
}
|
|
func addTwoNumbers(l1 *ListNode, l2 *ListNode) *ListNode {
|
|
signal := false
|
|
tmpstr := ""
|
|
firstNode := (*ListNode)(nil)
|
|
result := (*ListNode)(nil)
|
|
value1 := 0
|
|
|
|
for l1 != nil || l2 != nil {
|
|
//
|
|
tmpNode := &ListNode{}
|
|
a := 0
|
|
if signal {
|
|
a = 1
|
|
}
|
|
if l1 == nil {
|
|
value := l2.Val
|
|
if value+a > 9 {
|
|
signal = true
|
|
} else {
|
|
signal = false
|
|
}
|
|
tmpNode.Val = (value + a) % 10
|
|
result.Next = tmpNode
|
|
result = result.Next
|
|
l2 = l2.Next
|
|
continue
|
|
}
|
|
if l2 == nil {
|
|
value := l1.Val
|
|
if value+a > 9 {
|
|
signal = true
|
|
} else {
|
|
signal = false
|
|
}
|
|
fmt.Println("l2==nil")
|
|
tmpNode.Val = (value + a) % 10
|
|
result.Next = tmpNode
|
|
result = result.Next
|
|
l1 = l1.Next
|
|
continue
|
|
}
|
|
value := l1.Val + l2.Val
|
|
if value+a > 9 {
|
|
signal = true
|
|
} else {
|
|
signal = false
|
|
}
|
|
tmpNode.Val = (value + a) % 10
|
|
if value1 == 0 {
|
|
firstNode = tmpNode
|
|
result = tmpNode
|
|
value1 = 1
|
|
l1 = l1.Next
|
|
l2 = l2.Next
|
|
continue
|
|
}
|
|
result.Next = tmpNode
|
|
result = result.Next
|
|
l1 = l1.Next
|
|
l2 = l2.Next
|
|
|
|
}
|
|
if signal {
|
|
tmpNode := &ListNode{}
|
|
tmpNode.Val = 1
|
|
result.Next = tmpNode
|
|
result = result.Next
|
|
}
|
|
fmt.Println(tmpstr)
|
|
return firstNode
|
|
}
|
|
|
|
//func addTwoNumbers(l1 *ListNode, l2 *ListNode) *ListNode {
|
|
// var str1 string
|
|
// var str2 string
|
|
//
|
|
// for l1 != nil {
|
|
// if len(str1) < 0 {
|
|
// str1 = strconv.Itoa(l1.Val)
|
|
// continue
|
|
// }
|
|
// str1 += strconv.Itoa(l1.Val)
|
|
// }
|
|
// intnum1 := reverse(str1)
|
|
//
|
|
// for l2 != nil {
|
|
// if len(str2) < 0 {
|
|
// str2 = strconv.Itoa(l2.Val)
|
|
// continue
|
|
// }
|
|
// str2 += strconv.Itoa(l2.Val)
|
|
// }
|
|
// intnum2 := reverse(str2)
|
|
// intnum3 := strconv.Itoa(reverse(strconv.Itoa(intnum1 + intnum2)))
|
|
// firstNode := (*ListNode)(nil)
|
|
// result := (*ListNode)(nil)
|
|
// value := 0
|
|
// for i := 0; i < len(intnum3); i++ {
|
|
// tmp := &ListNode{}
|
|
// if value == 0 {
|
|
// tmp.Val = int(intnum3[i])
|
|
// firstNode = tmp
|
|
// result = tmp
|
|
// value = 1
|
|
// continue
|
|
//
|
|
// }
|
|
// tmp.Val = int(intnum3[i])
|
|
// result.Next = tmp
|
|
// result = result.Next
|
|
//
|
|
// }
|
|
//
|
|
// return firstNode
|
|
//}
|
|
|
|
//func reverse(s string) int {
|
|
// b := []byte(s)
|
|
// for i, j := 0, len(b)-1; i < j; i, j = i+1, j-1 {
|
|
// b[i], b[j] = b[j], b[i]
|
|
// }
|
|
// num, _ := strconv.Atoi(string(b))
|
|
// return num
|
|
//}
|
|
|
|
//func addTwoNumbers(l1 *ListNode, l2 *ListNode) *ListNode {
|
|
// firstNode := (*ListNode)(nil)
|
|
// result := (*ListNode)(nil)
|
|
// value := 0
|
|
//
|
|
// for l1 != nil || l2 != nil {
|
|
// tmpNode := &ListNode{}
|
|
// if l1 == nil {
|
|
// tmpNode.Val = l2.Val
|
|
// result.Next = tmpNode
|
|
// result = result.Next
|
|
// l2 = l2.Next
|
|
// continue
|
|
// } else if l2 == nil {
|
|
// tmpNode.Val = l1.Val
|
|
// result.Next = tmpNode
|
|
// result = result.Next
|
|
// l1 = l1.Next
|
|
// continue
|
|
// }
|
|
// tmpNode.Val = l1.Val + l2.Val
|
|
// if value == 0 {
|
|
// firstNode = tmpNode
|
|
// result = tmpNode
|
|
// l1 = l1.Next
|
|
// l2 = l2.Next
|
|
// value++
|
|
// continue
|
|
// }
|
|
// result.Next = tmpNode
|
|
// result = result.Next
|
|
// l1 = l1.Next
|
|
// l2 = l2.Next
|
|
//
|
|
// }
|
|
//
|
|
// return firstNode
|
|
//}
|