|
@@ -0,0 +1,103 @@
|
|
|
+package main
|
|
|
+
|
|
|
+import (
|
|
|
+ "fmt"
|
|
|
+ "strconv"
|
|
|
+)
|
|
|
+
|
|
|
+func main() {
|
|
|
+ //var l1 = &ListNode{
|
|
|
+ // 2, &ListNode{4, &ListNode{3, nil}},
|
|
|
+ //}
|
|
|
+ //var l2 = &ListNode{
|
|
|
+ // 5, &ListNode{6, &ListNode{4, nil}},
|
|
|
+ //}
|
|
|
+ var l1 = &ListNode{
|
|
|
+ 9, nil,
|
|
|
+ }
|
|
|
+ fmt.Println(9 + 9999999991)
|
|
|
+ var l2 *ListNode
|
|
|
+ var l2Cuosor *ListNode
|
|
|
+ for i := 0; i < 10; i++ {
|
|
|
+ if i == 0 {
|
|
|
+ l2 = &ListNode{1, nil}
|
|
|
+ l2Cuosor = l2
|
|
|
+ continue
|
|
|
+ }
|
|
|
+
|
|
|
+ var temp = &ListNode{9, nil}
|
|
|
+ l2Cuosor.Next = temp
|
|
|
+ l2Cuosor = l2Cuosor.Next
|
|
|
+ }
|
|
|
+
|
|
|
+ // [1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1]
|
|
|
+ //[5,6,4]
|
|
|
+
|
|
|
+ var i int64 = 1000000000000000000000000000001
|
|
|
+ fmt.Println(i)
|
|
|
+ return
|
|
|
+
|
|
|
+ var result = addTwoNumbers(l1, l2)
|
|
|
+ listPrint(result)
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * Definition for singly-linked list.
|
|
|
+ * type ListNode struct {
|
|
|
+ * Val int
|
|
|
+ * Next *ListNode
|
|
|
+ * }
|
|
|
+ */
|
|
|
+type ListNode struct {
|
|
|
+ Val int
|
|
|
+ Next *ListNode
|
|
|
+}
|
|
|
+
|
|
|
+func listPrint(list *ListNode) {
|
|
|
+ for list != nil {
|
|
|
+ fmt.Printf("%v", list.Val)
|
|
|
+ if list.Next == nil {
|
|
|
+ break
|
|
|
+ }
|
|
|
+ fmt.Printf(" -> ")
|
|
|
+ list = list.Next
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+func addTwoNumbers(l1 *ListNode, l2 *ListNode) *ListNode {
|
|
|
+ var l1Str, l2Str string
|
|
|
+ var l1Int, l2Int int64
|
|
|
+ var l1Temp, l2Temp = l1, l2
|
|
|
+ for l1Temp != nil {
|
|
|
+ l1Str = strconv.FormatInt(int64(l1Temp.Val), 10) + l1Str
|
|
|
+ l1Temp = l1Temp.Next
|
|
|
+ }
|
|
|
+ for l2Temp != nil {
|
|
|
+ l2Str = strconv.FormatInt(int64(l2Temp.Val), 10) + l2Str
|
|
|
+ l2Temp = l2Temp.Next
|
|
|
+ }
|
|
|
+
|
|
|
+ l1Int, _ = strconv.ParseInt(l1Str, 10, 64)
|
|
|
+ l2Int, _ = strconv.ParseInt(l2Str, 10, 64)
|
|
|
+
|
|
|
+ var num = strconv.FormatInt(l1Int+l2Int, 10)
|
|
|
+ fmt.Println("---------------", num, l1Str, l2Str)
|
|
|
+ var head = &ListNode{}
|
|
|
+ var cursor *ListNode
|
|
|
+ for i := len(num) - 1; i >= 0; i-- {
|
|
|
+ var val, _ = strconv.ParseInt(num[i:i+1], 10, 32)
|
|
|
+ var temp = &ListNode{}
|
|
|
+ temp.Val = int(val)
|
|
|
+ temp.Next = nil
|
|
|
+
|
|
|
+ if i == len(num)-1 {
|
|
|
+ head = temp
|
|
|
+ cursor = head
|
|
|
+ continue
|
|
|
+ }
|
|
|
+
|
|
|
+ cursor.Next = temp
|
|
|
+ cursor = cursor.Next
|
|
|
+ }
|
|
|
+ return head
|
|
|
+}
|