
GO 数据结构和算法
justinsun221
这个作者很懒,什么都没留下…
展开
-
数据结构之滑动窗口的最大值
package mainimport "fmt"type DuQueue struct { Q []int}/* 单调递减队列*/func main() { // nums = [1,3,-1,-3,5,3], k = 3 // [3,3,5,5] nums := []int{4, 3, -1, -3, 5, 3} k := 3 winQ := &DuQueue{} ans := []int{} winQ.Q = make([]int, 0) // 元素<原创 2021-05-16 16:34:13 · 110 阅读 · 0 评论 -
数据结构之循环队列
循环队列:通常:index = i 的后一个是index+1index = i 的前一个是index+1但是这里的循环队列,我们将使用取模运算技巧index = i 的后一个是(index + 1) % capacity index = i 的前一个是(index - 1 +capacity) % capacity...原创 2021-05-04 21:44:40 · 384 阅读 · 2 评论 -
数据结构之二叉树的层次遍历
从上到下按层打印二叉树,同一层结点按从左到右的顺序打印,每一层打印到一行输入:输出:[[3], [9, 8], [6, 7]]package mainimport "fmt"// treetype NodeTree struct { Data int LeftNode *NodeTree RightNode *NodeTree}type Queue struct { Node []*NodeTree QSize int}func main() { no原创 2021-05-04 17:28:24 · 268 阅读 · 0 评论 -
数据结构之链表
数据结构之链表package mainimport "fmt"type Node struct { Data int PNext *Node}func main() { node := InitLinkList() node.TravserLinkList() node.Insert(3, 99) node.TravserLinkList() var val int node.Delete(5, &val) fmt.Println(val) node.Travs原创 2021-05-02 22:03:49 · 109 阅读 · 0 评论 -
二叉树遍历
package mainimport "fmt"// 二叉数type TreeNode struct { Data string LefeNode *TreeNode RightNode *TreeNode}func main() { // 创建二叉树 tn := Create() PreTraverse(tn) fmt.Println("") InTraverse(tn) fmt.Println("") PostTraverse(tn)}// 创建静态原创 2021-04-24 10:17:02 · 84 阅读 · 0 评论 -
汉诺塔
package mainimport ( "fmt" )func main() { // 汉诺塔 test1(3, "A", "B", "C")}func test1(n int, a, b, c string) { if n == 1 { fmt.Printf("将%s柱子移动到%s柱子上\n", a, c) } else { // 将n-1(当前在A上) 借助于c移动到b上 test1(n-1, a, c, b) fmt.Printf("将%s柱子移动到%s柱子原创 2021-04-21 09:58:03 · 79 阅读 · 0 评论 -
单调栈计算最大矩形面积
单调栈计算最大矩形面积题目:给定一个数组,数组中的元素代表木板的高度。请你求出相邻木板能剪出的最大矩形面积我们以当前列向左右分别扩展查找,直到找到比当前小的第一个元素并且标记这个元素位置,矩形的面积为当前列高*宽度(当前列可以绘制最大宽度)package rectimport ( "main/stacktmp")// 给定一个数组,数组中的元素代表木板的高度。请你求出相邻木板能剪出的最大矩形面积func Rect(s []int) int { if len(s) == 0 { re原创 2021-04-18 10:14:41 · 1076 阅读 · 0 评论 -
合法字符串需要括号可以配对
字符串中只有字符’(‘和’)’。合法字符串需要括号可以配对。比如:输入:"()"输出:true解释:(),()(),(())是合法的。)(,()(,(()是非法的。package mainimport "fmt"func main() { b := stack2("()()())") fmt.Println(b)}func stack2(s string) bool { if len(s) == 0 { // 空字符串不合法 return false } else if原创 2021-04-13 09:59:47 · 239 阅读 · 0 评论 -
GO 实现冒泡排序
package mainimport "fmt"func main (){ // 冒泡排序 arr := []int{9,6,1,3,5} for i:=1; i < len(arr); i ++{ for j:=1; j <len(arr)-i+1; j++{ if arr[j] < arr[j-1]{ arr[j], arr[j-1...原创 2019-05-30 21:45:51 · 278 阅读 · 0 评论 -
GO实现插入排序
package mainimport ( "fmt")func main (){ arr := []int{9,6,1,3,5} // 插排 for i:=1;i <len(arr);i ++{ for j:=i; j >0; j--{ if arr[j] < arr[j-1]{ fmt.Println(j) arr[j], arr[j...原创 2019-05-30 21:44:16 · 189 阅读 · 0 评论 -
Go 实现单轴快排
Go 实现单轴快排package mainimport "fmt"func main(){ arr := []int{9, 6, 11, 3, 5, 12, 8, 7, 10, 15, 14, 4, 1, 13, 2} quickSort(0,len(arr)-1, arr) fmt.Println(arr) }func quickSort(start, end int, a...原创 2019-05-30 21:40:59 · 143 阅读 · 0 评论