增加新题目
This commit is contained in:
102
链表/两数相加/main.go
Normal file
102
链表/两数相加/main.go
Normal file
@@ -0,0 +1,102 @@
|
||||
package main
|
||||
|
||||
type ListNode struct {
|
||||
Val int
|
||||
Next *ListNode
|
||||
}
|
||||
|
||||
func main() {
|
||||
|
||||
}
|
||||
|
||||
//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
|
||||
}
|
||||
@@ -1,5 +1,7 @@
|
||||
package main
|
||||
|
||||
import "fmt"
|
||||
|
||||
type ListNode struct {
|
||||
Val int
|
||||
Next *ListNode
|
||||
@@ -11,10 +13,59 @@ func main() {
|
||||
func mergeTwoLists(list1 *ListNode, list2 *ListNode) *ListNode {
|
||||
upP := list1
|
||||
dnP := list2
|
||||
for upP.Next != nil && dnP.Next != nil {
|
||||
if upP.Next == nil {
|
||||
firstNode := (*ListNode)(nil)
|
||||
value := 0
|
||||
Ponit := (*ListNode)(nil)
|
||||
if list1 == nil {
|
||||
if list2 == nil {
|
||||
return nil
|
||||
}
|
||||
return list2
|
||||
|
||||
}
|
||||
if list2 == nil {
|
||||
return list1
|
||||
}
|
||||
return nil
|
||||
for upP != nil || dnP != nil {
|
||||
tmpP := &ListNode{}
|
||||
|
||||
if upP == nil {
|
||||
tmpP.Val = dnP.Val
|
||||
Ponit.Next = tmpP
|
||||
dnP = dnP.Next
|
||||
|
||||
Ponit = Ponit.Next
|
||||
fmt.Println("停留1")
|
||||
continue
|
||||
}
|
||||
if dnP == nil {
|
||||
tmpP.Val = upP.Val
|
||||
Ponit.Next = tmpP
|
||||
upP = upP.Next
|
||||
|
||||
Ponit = Ponit.Next
|
||||
fmt.Println("停留2")
|
||||
continue
|
||||
}
|
||||
if upP.Val >= dnP.Val {
|
||||
tmpP.Val = dnP.Val
|
||||
dnP = dnP.Next
|
||||
} else {
|
||||
tmpP.Val = upP.Val
|
||||
upP = upP.Next
|
||||
}
|
||||
|
||||
if value == 0 {
|
||||
Ponit = tmpP
|
||||
firstNode = Ponit
|
||||
value++
|
||||
continue
|
||||
}
|
||||
Ponit.Next = tmpP
|
||||
Ponit = Ponit.Next
|
||||
|
||||
value++
|
||||
|
||||
}
|
||||
return firstNode
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user