
Go学习之路
hp_cpp
这个作者很懒,什么都没留下…
展开
-
Go语言:“之”字形打印矩阵
【题目】给定一个矩阵matrix,按照“之”字形的方式打印这个矩阵。例如1, 2, 3, 45, 6, 7, 89, 10, 11, 12打印结果是1, 2, 5, 9 , 6, 3, 4 , 7 , 10 , 11, 8, 12。要求额外空间复杂度是O(1)。package mainimport ( "fmt")func calPrintNum(arr [][...原创 2019-10-19 17:26:36 · 218 阅读 · 0 评论 -
Go语言:将正方形矩阵顺时针转动90°
题目:给定一个N x N的矩阵matrix,把这个矩阵调整成顺时针转动90°后的形式。例如:1 2 3 45 6 7 89 10 11 1213 14 15 16顺时针转动90°后为:13 9 5 114 10 6 215 11 7 316 12 8 4要求:额外时间复杂度为Q(1)package mainimpo...原创 2019-10-16 19:10:48 · 296 阅读 · 0 评论 -
Go语言:转圈打印矩阵
题目:给定一个整形矩阵matrix,请按照转圈的方式打印它。例如:1 2 3 45 6 7 89 10 11 1213 14 15 16打印结果为:1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16要求:额外空间复杂度为O(1)代码:package mainimport ( "fmt")...原创 2019-10-15 17:59:14 · 230 阅读 · 0 评论 -
Go语言:爱吃香蕉的珂珂
package mainimport ( "fmt")func canEatAll(piles []int, mid int, H int) bool { var sum int = 0 for i := 0; i < len(piles); i++ { sum = sum + (piles[i] - 1)/mid + 1 }...原创 2019-10-15 08:26:18 · 243 阅读 · 0 评论 -
Go语言:数组中子数组的最大累乘积
题目:给定一个double类型的数组arr,其中的元素可正、可负、可0,返回子数组累乘的最大乘积。例如,arr=[-2.5, 4, 0, 3, 0.5, 8, -1],子数组[3, 0.5, 8]累乘可以获得最大的乘积12,所以返回12。package mainimport ( "fmt")func Max(x, y float32) float32 { if x &...原创 2019-10-15 08:24:56 · 225 阅读 · 0 评论 -
Go语言:打印N个数组整体最大的Top K
题目:有N个长度不一的数组,所有的数组都是有序的,请从大到小打印这N个数组整体最大的前K个数。例如,输入含有N行元素的二维数组可以代表N个一维数组。219, 405, 538, 845, 971148, 55852, 99, 348, 691再输入整数k=5, 则打印:Top 5: 971, 845, 691, 558, 538package main import ( "c...原创 2019-10-13 22:10:56 · 923 阅读 · 0 评论 -
Go语言:如何仅用递归函数和栈操作逆序一个栈
【题目】:一个栈依次压入1,2,3,4,5,那么从栈顶到栈底分别为5,4,3,2,1。将这个栈转置后,从栈顶到栈底为1,2,3,4,5,也就是实现栈中元素的逆序,但是只能用递归函数来实现,不能用其他数据结构。本题的要求是用一个栈,如果用两个栈解决该问题,就更简单了。本题还有其他的解法。先记录一种常见的解法。解法一:设计两个递归函数:func getAndRemoveLastEleme...原创 2019-10-12 20:40:28 · 205 阅读 · 0 评论 -
go语言数据结构之栈的实现 栈
package mainimport ( "fmt" "log")type Stack struct { size int64 //容量 top int64 //栈顶 data []interface{}}func MakeStack(size int64) Stack { q := Stack{} q.size = size q.data = make([]in...转载 2019-10-12 12:02:52 · 500 阅读 · 0 评论 -
Go网络编程之echo
参考一些资料,自己写了一个简单的echo。简单功能:从客户端终端输入字符串(不超过1024),通过tcp发送给服务器端;服务器端收到什么字符串,就马上将字符串按照原路返回;客户端收到字符串后,马上显示出来。server.gopackage mainimport ( "net" "fmt" "io")const BUFF_SIZE = 1024var buff = make(...原创 2019-09-22 17:41:31 · 308 阅读 · 0 评论 -
Go语言处理JSON之——利用Unmarshal解析json字符串
简单的解析例子:首先还是从官方文档中的例子:package mainimport ( "fmt" "encoding/json")type Animal struct { Name string Order string}func main() { var jsonBlob = []byte(`[ {"Name": "Platypus", "Orde...原创 2019-09-20 13:56:09 · 14334 阅读 · 0 评论 -
Go语言处理JSON之——利用Marshal生成json字符串(二)
上一篇文章中,我们最后留了个实例,就是生成这样的json字符串:{ "first fruit": { "describe":"an apple", "icon":"appleIcon", "name":"apple" }, "second fruit": { "describe":"an or...原创 2019-09-20 12:05:33 · 1137 阅读 · 0 评论 -
Go语言处理JSON之——利用Marshal生成json字符串(一)
利用Go语言内置的encodong/json标准库,我们可以轻松地生成和解析json格式的数据。func Marshal(v interface{}) ([]byte, error)从返回值我们可以看到,该函数有两个返回值,一个是传入参数v的json编码,类型为[]byte,另外一个就是error。官方文档提供了一个例子:package mainimport ( "fmt" "e...原创 2019-09-20 10:35:37 · 4911 阅读 · 2 评论 -
Go的Tcp编程实例
通过go实现一个简单的服务器和多个客户端连接的实例。服务器端代码:package mainimport ( "net" "fmt" _"io" "log")func server() { listen_sock, err := net.Listen("tcp", "127.0.0.1:8888") if err != nil{ log.Fatal(err) } ...转载 2019-09-15 21:58:27 · 377 阅读 · 0 评论 -
go语言实现--广度优先搜索迷宫
迷宫大致如下:左上角和右下角的点分别为起点和终点,灰色的点代表墙,走不通,白色的点可以走通,我们要做的是从起点走到终点,我们每到一个点便从上左下右四个方向探索它周围的四个点,如果是走过的点我们不要探索,计算出它的步数,用的广度优先算法。第一步:把起点(0,0)入队列,每次探索一个点,便把它出队列,坐标是行和列第二步:把(0,0)出队列,开始探索(0,0),发现只有(1,0)走得通,把(1...转载 2019-09-14 20:23:16 · 302 阅读 · 0 评论 -
用Go实现的冒泡排序算法——几种不同形式的冒泡
冒泡排序一直都是基础排序算法之一,在学习Go语言的时候,顺便把数据结构复习一下。package main import "fmt" func main() { arr := []int{8, 4, 2, 9, 10, -3, 3, 20, 15, -1} BubbleSort3(arr) fmt.Println(arr)} func BubbleSort(arr []int)...原创 2019-09-13 16:28:02 · 174 阅读 · 0 评论 -
Go语言之九九乘法表
package mainimport ( "fmt")func main() { for i := 1; i <= 9; i++ { for j := 1; j <= i; j++ { fmt.Print(" --------") } fmt.Println() for j := 1; j &l...原创 2019-09-11 09:26:18 · 840 阅读 · 0 评论