增加新题目
This commit is contained in:
54
链表/两两交换链表中的节点/main.go
Normal file
54
链表/两两交换链表中的节点/main.go
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
type ListNode struct {
|
||||||
|
Val int
|
||||||
|
Next *ListNode
|
||||||
|
}
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func swapPairs(head *ListNode) *ListNode {
|
||||||
|
|
||||||
|
firstNode := (*ListNode)(head)
|
||||||
|
secondNode := (*ListNode)(nil)
|
||||||
|
num := 0
|
||||||
|
for head != nil {
|
||||||
|
if head.Next != nil {
|
||||||
|
if head.Next.Next != nil {
|
||||||
|
if num == 0 {
|
||||||
|
firstNode = head.Next
|
||||||
|
secondNode = head
|
||||||
|
}
|
||||||
|
if secondNode != nil && num != 0 {
|
||||||
|
secondNode.Next = head.Next
|
||||||
|
}
|
||||||
|
tmpright := head.Next.Next
|
||||||
|
head.Next.Next = head
|
||||||
|
head.Next = tmpright
|
||||||
|
secondNode = head
|
||||||
|
head = tmpright
|
||||||
|
|
||||||
|
num++
|
||||||
|
continue
|
||||||
|
} else {
|
||||||
|
if num == 0 {
|
||||||
|
firstNode = head.Next
|
||||||
|
secondNode = head
|
||||||
|
}
|
||||||
|
if secondNode != nil && num != 0 {
|
||||||
|
secondNode.Next = head.Next
|
||||||
|
}
|
||||||
|
tmpright := head.Next.Next
|
||||||
|
head.Next.Next = head
|
||||||
|
secondNode = head
|
||||||
|
head.Next = tmpright
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
head = head.Next
|
||||||
|
num++
|
||||||
|
}
|
||||||
|
return firstNode
|
||||||
|
}
|
||||||
151
链表/两数相加/main.go
151
链表/两数相加/main.go
@@ -1,5 +1,9 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
)
|
||||||
|
|
||||||
type ListNode struct {
|
type ListNode struct {
|
||||||
Val int
|
Val int
|
||||||
Next *ListNode
|
Next *ListNode
|
||||||
@@ -8,6 +12,77 @@ type ListNode struct {
|
|||||||
func main() {
|
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 {
|
//func addTwoNumbers(l1 *ListNode, l2 *ListNode) *ListNode {
|
||||||
// var str1 string
|
// var str1 string
|
||||||
@@ -62,41 +137,41 @@ func main() {
|
|||||||
// return num
|
// return num
|
||||||
//}
|
//}
|
||||||
|
|
||||||
func addTwoNumbers(l1 *ListNode, l2 *ListNode) *ListNode {
|
//func addTwoNumbers(l1 *ListNode, l2 *ListNode) *ListNode {
|
||||||
firstNode := (*ListNode)(nil)
|
// firstNode := (*ListNode)(nil)
|
||||||
result := (*ListNode)(nil)
|
// result := (*ListNode)(nil)
|
||||||
value := 0
|
// value := 0
|
||||||
|
//
|
||||||
for l1 != nil || l2 != nil {
|
// for l1 != nil || l2 != nil {
|
||||||
tmpNode := &ListNode{}
|
// tmpNode := &ListNode{}
|
||||||
if l1 == nil {
|
// if l1 == nil {
|
||||||
tmpNode.Val = l2.Val
|
// tmpNode.Val = l2.Val
|
||||||
result.Next = tmpNode
|
// result.Next = tmpNode
|
||||||
result = result.Next
|
// result = result.Next
|
||||||
l2 = l2.Next
|
// l2 = l2.Next
|
||||||
continue
|
// continue
|
||||||
} else if l2 == nil {
|
// } else if l2 == nil {
|
||||||
tmpNode.Val = l1.Val
|
// tmpNode.Val = l1.Val
|
||||||
result.Next = tmpNode
|
// result.Next = tmpNode
|
||||||
result = result.Next
|
// result = result.Next
|
||||||
l1 = l1.Next
|
// l1 = l1.Next
|
||||||
continue
|
// continue
|
||||||
}
|
// }
|
||||||
tmpNode.Val = l1.Val + l2.Val
|
// tmpNode.Val = l1.Val + l2.Val
|
||||||
if value == 0 {
|
// if value == 0 {
|
||||||
firstNode = tmpNode
|
// firstNode = tmpNode
|
||||||
result = tmpNode
|
// result = tmpNode
|
||||||
l1 = l1.Next
|
// l1 = l1.Next
|
||||||
l2 = l2.Next
|
// l2 = l2.Next
|
||||||
value++
|
// value++
|
||||||
continue
|
// continue
|
||||||
}
|
// }
|
||||||
result.Next = tmpNode
|
// result.Next = tmpNode
|
||||||
result = result.Next
|
// result = result.Next
|
||||||
l1 = l1.Next
|
// l1 = l1.Next
|
||||||
l2 = l2.Next
|
// l2 = l2.Next
|
||||||
|
//
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
return firstNode
|
// return firstNode
|
||||||
}
|
//}
|
||||||
|
|||||||
65
链表/删除链表的倒数第N个结点/main.go
Normal file
65
链表/删除链表的倒数第N个结点/main.go
Normal file
@@ -0,0 +1,65 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import "fmt"
|
||||||
|
|
||||||
|
type ListNode struct {
|
||||||
|
Val int
|
||||||
|
Next *ListNode
|
||||||
|
}
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
|
||||||
|
}
|
||||||
|
func removeNthFromEnd(head *ListNode, n int) *ListNode {
|
||||||
|
if head.Next == nil && n == 1 {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
firstNode := (*ListNode)(nil)
|
||||||
|
result := (*ListNode)(nil)
|
||||||
|
preNode := (*ListNode)(nil)
|
||||||
|
for head != nil {
|
||||||
|
fmt.Printf("1----")
|
||||||
|
if preNode != nil {
|
||||||
|
fmt.Printf("preNode:%d|", preNode.Val)
|
||||||
|
if firstNode == nil {
|
||||||
|
firstNode = preNode
|
||||||
|
result = preNode
|
||||||
|
} else {
|
||||||
|
result.Next = preNode
|
||||||
|
result = result.Next
|
||||||
|
}
|
||||||
|
}
|
||||||
|
tmp := head
|
||||||
|
tmp2 := &ListNode{Val: tmp.Val}
|
||||||
|
value := 0
|
||||||
|
for i := 0; i < n; i++ {
|
||||||
|
if tmp.Next != nil {
|
||||||
|
tmp = tmp.Next
|
||||||
|
value++
|
||||||
|
|
||||||
|
} else {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fmt.Printf("%d", value)
|
||||||
|
if value == n-1 {
|
||||||
|
fmt.Printf("找到,")
|
||||||
|
preNode = nil
|
||||||
|
head = head.Next
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
preNode = tmp2
|
||||||
|
head = head.Next
|
||||||
|
}
|
||||||
|
if preNode != nil {
|
||||||
|
fmt.Printf("preNode:%d|", preNode.Val)
|
||||||
|
if firstNode == nil {
|
||||||
|
firstNode = preNode
|
||||||
|
result = preNode
|
||||||
|
} else {
|
||||||
|
result.Next = preNode
|
||||||
|
result = result.Next
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return firstNode
|
||||||
|
}
|
||||||
14
链表/随机链表的复制/main.go
Normal file
14
链表/随机链表的复制/main.go
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
type Node struct {
|
||||||
|
Val int
|
||||||
|
Next *Node
|
||||||
|
Random *Node
|
||||||
|
}
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
|
||||||
|
}
|
||||||
|
func copyRandomList(head *Node) *Node {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user