123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- 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
- }
|