Golang
terrygmx
这个作者很懒,什么都没留下…
展开
-
Golang双指针解答接雨水问题
题目描述给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。示例 1:输入:height = [0,1,0,2,1,0,1,3,2,1,2,1]输出:6解释:上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。示例 2:输入:height = [4,2,0,3,2,5]输出:9解题思路首先要明确,每个位置能存的水,取决与其两边的最大高度值。在此基础上,可以原创 2021-02-05 09:44:36 · 353 阅读 · 0 评论 -
Go语言结构体中的标签问题
Struct Tag相信大家都用过结构体的标签功能吧,特别是生成Json串会经常用到。样例程序请看下面这一段程序,这里使用反射,通过用 FieldByName(“Name”) 获得结构体的Name 字段。然后使用.Tag.Get(“format”) 取得标签。type Employee struct{ EmployeeID string Name string `format: "n...原创 2019-12-26 15:11:00 · 352 阅读 · 0 评论 -
Golang调用RESTFUL API——嵌套型Json
本文是原创文章,以后我踩过的golang或python的坑,都会在此和大家分享,共同进步!url.Values百度搜索出来的Post调用方式,无论是 http.PostForm方式:func post(){ resp, err := http.PostForm("http://127.0.0.1", url.Values{...原创 2019-06-20 15:05:54 · 3162 阅读 · 0 评论 -
Golang 实现 Trie (前缀树)
定义前缀树是N叉树的一种特殊形式。通常来说,一个前缀树是用来存储字符串的。前缀树的每一个节点代表一个字符串(前缀)。每一个节点会有多个子节点,通往不同子节点的路径上有着不同的字符。子节点代表的字符串是由节点本身的原始字符串,以及通往该子节点路径上所有的字符组成的。下面是前缀树的一个例子:在上图示例中,我们在节点中标记的值是该节点对应表示的字符串。例如,我们从根节点开始,选择第二条路径 ‘b...原创 2019-03-31 00:25:42 · 3434 阅读 · 0 评论 -
算法 | golang 实现 key有序map
摘要: Golang map实现原理是hashmap(核心元素是桶,key通过哈希算法被归入不同的bucket中),key是无序的,很多应用场景可能需要mapkey有序(例如交易所订单撮合),C++ 的stl map实现了key有序,实际上是TreeMap是基于树(红黑树)的实现方式,即添加到一个有序列表,在O(logn)的复杂度内通过key值找到value,优点是空间要...转载 2019-03-26 16:11:03 · 8082 阅读 · 0 评论 -
验证二叉搜索树
二叉搜索树的定义二叉搜索树(BST)是二叉树的一种特殊表示形式,它满足如下特性:每个节点中的值必须大于(或等于)存储在其左侧子树中的任何值。每个节点中的值必须小于(或等于)存储在其右子树中的任何值。下面是一个二叉搜索树的例子:像普通的二叉树一样,我们可以按照前序、中序和后序来遍历一个二叉搜索树。 但是值得注意的是,对于二叉搜索树,我们可以通过中序遍历得到一个递增的有序序列。因此,中序遍...原创 2019-03-30 00:39:50 · 190 阅读 · 0 评论 -
Go Runtime hashmap实现
hashmap 通过一个 bucket 数组实现,所有元素将被 hash 到数组中的 bucket 中,bucket 填满后,将通过一个 overflow 指针来扩展一个 bucket 出来形成链表,也就是解决冲突问题。这也就是一个基本的 hash 表结构,没什么新奇的东西,下面总结一些细节吧。注意一个 bucket 并不是只能存储一个 key/value 对,而是可以存储8个 key/va...转载 2019-03-21 17:09:28 · 112 阅读 · 0 评论 -
【原创】巧解十进制整数的反码问题
问题:每个非负整数 N 都有其二进制表示。例如, 5 可以被表示为二进制 “101”,11 可以用二进制 “1011” 表示,依此类推。注意,除 N = 0 外,任何二进制表示中都不含前导零。二进制的反码表示是将每个 1 改为 0 且每个 0 变为 1。例如,二进制数 “101” 的二进制反码为 “010”。给定十进制数 N,返回其二进制表示的反码所对应的十进制整数。数字范围0 <...原创 2019-03-17 22:10:55 · 1395 阅读 · 0 评论 -
Golang实现快速排序
定义快速排序(英语:Quicksort),又称划分交换排序(partition-exchange sort),简称快排,一种排序算法,最早由东尼·霍尔提出。在平均状况下,排序 n个项目要 O(n\log n)(大O符号)次比较。在最坏状况下则需要 O(n^{2})} {O(n^{2})次比较,但这种状况并不常见。事实上,快速排序 Theta (n\log n)通常明显比其他算法更快,因为它的内部...原创 2018-10-30 12:14:29 · 380 阅读 · 1 评论 -
Golang实现归并排序
定义归并排序(英语:Merge sort,或mergesort),是创建在归并操作上的一种有效的排序算法,效率为 O(n\log n)(大O符号)。1945年由约翰·冯·诺伊曼首次提出。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用,且各层分治递归可以同时进行。操作递归法(Top-down)申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后的序列...原创 2018-10-25 15:55:37 · 935 阅读 · 0 评论 -
Golang实现堆排序
定义堆排序(英语:Heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。堆节点的访问通常堆是通过一维数组来实现的。在数组起始位置为0的情形中:父节点i的左子节点在位置 (2i+1);父节点i的右子节点在位置 (2i+2);子节点i的父节点在位置 floor((i-1)/2);...原创 2018-10-18 11:45:11 · 505 阅读 · 0 评论 -
Golang实现插入排序
插入排序(英语:Insertion Sort)是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用in-place排序(即只需用到 O(1)的额外空间的排序),因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。**算法描述**一般来说,插入排序都采用in-pla...原创 2018-10-14 01:46:38 · 526 阅读 · 5 评论 -
Golang实现选择排序
@[Golang]Golang实现选择排序选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理如下。首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。选择排序的主要优点与数据移动有关。如果某个元素位于正确的最终位置上,则它不会被移动。选择排序每次...原创 2018-10-12 11:51:48 · 511 阅读 · 0 评论 -
Golang实现冒泡排序
@[Golang]Golang实现冒泡排序// popUpSortingpackage mainimport ( "fmt")func popupSort(col []int) []int { var n = len(col) if n &lt;= 1 { return col } for i := 0; i &lt; n; i++ { for j := n - 2...原创 2018-10-12 11:17:10 · 1054 阅读 · 0 评论