main.go 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. package main
  2. import (
  3. "fmt"
  4. "strconv"
  5. )
  6. func main() {
  7. //var l1 = &ListNode{
  8. // 2, &ListNode{4, &ListNode{3, nil}},
  9. //}
  10. //var l2 = &ListNode{
  11. // 5, &ListNode{6, &ListNode{4, nil}},
  12. //}
  13. var l1 = &ListNode{
  14. 9, nil,
  15. }
  16. fmt.Println(9 + 9999999991)
  17. var l2 *ListNode
  18. var l2Cuosor *ListNode
  19. for i := 0; i < 10; i++ {
  20. if i == 0 {
  21. l2 = &ListNode{1, nil}
  22. l2Cuosor = l2
  23. continue
  24. }
  25. var temp = &ListNode{9, nil}
  26. l2Cuosor.Next = temp
  27. l2Cuosor = l2Cuosor.Next
  28. }
  29. // [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]
  30. //[5,6,4]
  31. var i int64 = 1000000000000000000000000000001
  32. fmt.Println(i)
  33. return
  34. var result = addTwoNumbers(l1, l2)
  35. listPrint(result)
  36. }
  37. /**
  38. * Definition for singly-linked list.
  39. * type ListNode struct {
  40. * Val int
  41. * Next *ListNode
  42. * }
  43. */
  44. type ListNode struct {
  45. Val int
  46. Next *ListNode
  47. }
  48. func listPrint(list *ListNode) {
  49. for list != nil {
  50. fmt.Printf("%v", list.Val)
  51. if list.Next == nil {
  52. break
  53. }
  54. fmt.Printf(" -> ")
  55. list = list.Next
  56. }
  57. }
  58. func addTwoNumbers(l1 *ListNode, l2 *ListNode) *ListNode {
  59. var l1Str, l2Str string
  60. var l1Int, l2Int int64
  61. var l1Temp, l2Temp = l1, l2
  62. for l1Temp != nil {
  63. l1Str = strconv.FormatInt(int64(l1Temp.Val), 10) + l1Str
  64. l1Temp = l1Temp.Next
  65. }
  66. for l2Temp != nil {
  67. l2Str = strconv.FormatInt(int64(l2Temp.Val), 10) + l2Str
  68. l2Temp = l2Temp.Next
  69. }
  70. l1Int, _ = strconv.ParseInt(l1Str, 10, 64)
  71. l2Int, _ = strconv.ParseInt(l2Str, 10, 64)
  72. var num = strconv.FormatInt(l1Int+l2Int, 10)
  73. fmt.Println("---------------", num, l1Str, l2Str)
  74. var head = &ListNode{}
  75. var cursor *ListNode
  76. for i := len(num) - 1; i >= 0; i-- {
  77. var val, _ = strconv.ParseInt(num[i:i+1], 10, 32)
  78. var temp = &ListNode{}
  79. temp.Val = int(val)
  80. temp.Next = nil
  81. if i == len(num)-1 {
  82. head = temp
  83. cursor = head
  84. continue
  85. }
  86. cursor.Next = temp
  87. cursor = cursor.Next
  88. }
  89. return head
  90. }