自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(27)
  • 收藏
  • 关注

原创 漫画算法-学习笔记(31)

漫画算法-小灰的算法之旅(31)文章目录漫画算法-小灰的算法之旅(31)什么是A星寻路算法A星寻路的具体步骤代码实现什么是A星寻路算法A星寻路算法:(A * search algorithm),是一种用于寻找有效路径的算法。举一个简单的场景来解释一下A星寻路算法的工作过程。迷宫游戏的场景通常都是由小方格组成的。假设我们有一个7X5大小的迷宫,上图中绿色的格子是起点,红色的格子是终点,中间的3个蓝色格子是一堵墙。AI角色从起点开始,每一步只能向上/下/左/右移动1格,且不能穿越墙壁。那么如何让AI角色

2021-03-22 22:14:46 349

原创 Docker 开放RemoteAPI 2375端口访问

Docker 开放RemoteAPI 2375端口访问文章目录Docker 开放RemoteAPI 2375端口访问Docker常见端口修改配置文件重启Docker服务验证修改成功与否测试查看docker版本信息Docker常见端口2375 端口:未加密的docker socket; 远程登录root账号无密码访问主机(默认不开启)2376 端口:TLS加密套接字,很可能是 服务器的CI 4243端口作为https 443端口的修改2377 端口:集群模式套接字,适用于集群管理器,不适用于doc

2021-03-22 21:06:09 497 1

原创 漫画算法-学习笔记(30)

漫画算法-小灰的算法之旅(30)文章目录漫画算法-小灰的算法之旅(30)1. 什么是LRU算法?什么是LRU算法LRU算法描述示例演示时间复杂度代码实现golang实现1. 什么是LRU算法?什么是LRU算法LRU(Least Recently Used),也就是最近最少使用的意思,是一种内存管理算法,该算法最早应用于Linux操作系统。这个算法基于一种假设:长期不被使用的数据,在未来被用到的几率也不大。因此,当数据所占内存达到一定阀值时,我们可以移除掉最近最少被使用的数据,以此来给出足够的内存空间

2021-03-21 18:15:09 322

原创 漫画算法-学习笔记(29)

漫画算法-小灰的算法之旅(29)文章目录漫画算法-小灰的算法之旅(29)Bitmap的秘密BitMap 如何做到多维交叉运算的BitMap如何做到高速运算的BitMap代码实现golang实现关于BitMap算法一些处理大数据问题的场景:ReferenceBitmap的秘密BitMap 如何做到多维交叉运算的Bit即比特,是目前计算机系统里面数据的最小单位,8个bit即为一个Byte。一个bit的值,或者是0,或者是1;也就是说一个bit能存储的最多信息是2.Bitmap可以理解为通过一个bit数

2021-03-20 22:31:46 451

原创 漫画算法-学习笔记(28)

漫画算法-小灰的算法之旅(28)文章目录漫画算法-小灰的算法之旅(28)寻找缺失的整数方法一(哈希表)思路时间复杂度代码实现方法二(先排序后查找)思路时间复杂度代码实现方法三(累加求差)思路时间复杂度代码实现方法一(异或运算)思路时间复杂度代码实现方法一(分治法+异或运算)思路寻找缺失的整数Q: 在一个无序数组里面有99个不重复的正整数,范围是1~100,唯独缺少1个1~100中的整数,如何找出这个缺失的整数?方法一(哈希表)思路创建一个哈希表,以1到100这100个整数位key,然后遍历整

2021-03-19 23:50:38 121

原创 漫画算法-学习笔记(27)

漫画算法-小灰的算法之旅(27)文章目录漫画算法-小灰的算法之旅(27)1. 如何求解金矿问题动态规划解答递归实现时间复杂度问题优化代码实现(二维数组表实现)时间复杂度Reference1. 如何求解金矿问题Q: 有一位国王拥有5座金矿,每座金矿的黄金储量不同,需要参与挖掘的工人人数也不同。例如:有的金矿储量是400kg黄金,需要5个工人来挖掘;有的金矿储量是500kg黄金,需要5个工人来挖掘;有的金矿储量是200kg黄金,需要2个工人来挖掘;有的金矿储量是300kg黄金,需要4个工人来挖掘

2021-03-18 22:29:33 349

原创 Docker 安装mysql并解决ERROR 1045 (28000)问题

Docker 安装mysql并解决ERROR 1045 (28000):问题文章目录Docker 安装mysql并解决ERROR 1045 (28000):问题安装步骤打包镜像启动容器查看端口映射注意事项Reference安装步骤我习惯用dockerfile做一些自定义的配置。FROM mysql:8.0.23ENV MYSQL_ROOT_PASSWORD my_root_passwordENV MYSQL_DATABASE testENV MYSQL_USER

2021-03-18 22:17:16 2287

原创 漫画算法-学习笔记(26)

漫画算法-小灰的算法之旅(26)文章目录漫画算法-小灰的算法之旅(26)1. 如何实现大整数相加方法(模拟竖式加加法)思路时间复杂度代码实现golang实现代码优化时间复杂度golang实现1. 如何实现大整数相加Q:给出两个很大的整数,要求实现程序求出两个整数之和。注:整数可能超过long类型范围方法(模拟竖式加加法)思路考虑到数字可能会超过基础数据类型,因此我们无法采用传统的计算方式来计算超大型数字。但我们学过「列竖时计算」,因此本题可以采用模拟【竖式加法】的计算过程,来实现问题求解。

2021-03-17 21:31:25 117

原创 Go 在Mac下如何交叉编译

Go 在Mac下如何交叉编译文章目录Go 在Mac下如何交叉编译Go在mac下编译Linux、Window64位的可以执行文件Mac下编译Linux可执行文件Mac下编译Windows 64可执行文件ReferenceGo在mac下编译Linux、Window64位的可以执行文件Go语言支持交叉编译,在一个平台上可以生成另一个平台的可执行文件。但是由于命令比较长,因此做一个记录备注一下。Mac下编译Linux可执行文件# cd 到 main.go 所在的文件夹路径$ CGO_ENABLED=0

2021-03-17 20:43:37 818

原创 漫画算法-学习笔记(25)

漫画算法-小灰的算法之旅(25)文章目录漫画算法-小灰的算法之旅(25)1. 删去k个数字后的最小值方法一(贪心算法)思路时间复杂度代码实现方法二(贪心算法+单调栈)思路时间复杂度代码实现golang实现1. 删去k个数字后的最小值Q: 给出一个整数,从该整数中去掉k个数字,要求剩下的数字形成的新整数尽可能小。其中整数的长度大于或等于k,给出的整数的大小可以超过long类型的数字范围。示例1:给定整数为1593212 ,删去3个数字,新整数最小的情况为1212给定整数为30200,删去1个数

2021-03-16 21:16:51 209

原创 漫画算法-学习笔记(24)

漫画算法-小灰的算法之旅(24)文章目录漫画算法-小灰的算法之旅(24)1. 寻找全排列的下一个数思路时间复杂度代码实现golang实现1. 寻找全排列的下一个数Q: 给出一个正整数,找出这个正整数所有数字全排列的下一个数。说通俗一点就是在一个整数所包含数字的全部组合中,找到一个大于且仅大于原数的新整数。例如:如果输入12345;则返回12354如果输入12354;则返回12435如果输入12435;则返回12453思路对于长度为n的排列a:首先从后向前查找第一个顺序对(i,i+1)

2021-03-15 22:18:54 325

原创 漫画算法-学习笔记(23)

漫画算法-小灰的算法之旅(23)文章目录漫画算法-小灰的算法之旅(23)1. 如何用栈实现队列思路时间复杂度代码实现golang实现总结1. 如何用栈实现队列Q: 用两个栈来模拟一个队列,要求实现队列的两个基本操作,入队和出队。思路栈的特点是先入后出(FILO),出入元素都是在同一端(栈顶)。队列的特点是先入先出(FIFO),出入元素是在不同的两端(队头和队尾)。由于我们可以使用两个栈,那么可以让其中一个栈作为队列的入口,负责插入新元素;另一个栈作为队列的出口,负责移除老元素。队列的主要

2021-03-14 16:47:08 103

原创 漫画算法-学习笔记(22)

漫画算法-小灰的算法之旅(22)文章目录漫画算法-小灰的算法之旅(22)1. 无序数组排序后的最大相邻差方法一(排序数组+遍历求解)思路时间复杂度代码实现方法二(计数排序思想)思路代码实现方法三(桶排序思想)思路时间复杂度代码实现1. 无序数组排序后的最大相邻差Q: 有一个无序整型数组,如何求出该数组排序后的任意两个相邻元素的最大差值?要求时间和空间复杂度尽可能低。可能题目有点绕,让我们看看下图的例子:方法一(排序数组+遍历求解)思路使用任意一种时间复炸度为O(nlogn)的排序算法(如快

2021-03-14 16:46:19 109

原创 漫画算法-学习笔记(21)

漫画算法-小灰的算法之旅(21)文章目录漫画算法-小灰的算法之旅(21)1. 如何判断一个数是否为2的整数次幂方法一(暴力枚举)思路:时间复杂度代码实现golang实现方法二(枚举&&移位)思路时间复杂度代码实现golang实现方法三(按位与运算)思路时间复杂度代码实现golang实现总结1. 如何判断一个数是否为2的整数次幂Q:实现一个方法,来判断一个正整数是否是2的整数次幂(如16是2的4次方,返回true;18不是2的整数次幂,则返回false).要求性能尽可能高。方法一(

2021-03-14 16:45:16 179

原创 漫画算法-学习笔记(20)

漫画算法-小灰的算法之旅(20)文章目录漫画算法-小灰的算法之旅(20)1. 如何求出最大公约数暴力枚举法思路时间复杂度代码实现golang实现辗转相除法思路时间复杂度代码实现golang实现更相减损法思路时间复杂度代码实现golang实现更相减损法+移位运算相结合思路时间复杂度代码实现golang实现1. 如何求出最大公约数Q: 写一段代码,求出两个整数的最大公约数,要尽量优化算法的性能暴力枚举法思路假设存在a,b两个整数,从较小整数的一半开始,试图找到一个合适的整数k,使得这个整数能被a

2021-03-12 22:37:12 257

原创 漫画算法-学习笔记(19)

漫画算法-小灰的算法之旅(19)文章目录漫画算法-小灰的算法之旅(19)1. 最小栈的实现方法一(辅助栈)思路:时间复杂度代码实现golang实现方法二(自定义栈)思路:时间复杂度代码实现1. 最小栈的实现Q: 实现一个栈,该栈带有出栈(pop)、入栈(push)、取最小元素(getMin)三个方法。要保证3个方法的时间复杂度都是O(1)。对于栈而言,如果一个元素a在入栈时,栈里面有其它的元素b,c,d;那么无论这个栈在之后经历了什么操作,只要a在栈中,b,c,d就一定在栈中(FILO),因为在

2021-03-11 20:52:32 142 2

原创 漫画算法-学习笔记(18)

漫画算法-小灰的算法之旅(18)文章目录漫画算法-小灰的算法之旅(18)1. 如何判断链表有环方法一方法二方法三(快慢指针追及)代码实现2. 如何求链表环的长度3. 如何求出环形俩表的入环点1. 如何判断链表有环Q: 有一个单向链表,链表中有可能出现"环",像下图一样。那么,如何用程序来判断该链表是否为有环链表呢?方法一首先从头节点开始,依次遍历单链表中的每一个节点。每遍历一个新节点,就从头检查新节点之前的所有节点,用新节点和此节点之前所有节点依次做比较。如果发现新节点和之前的某个节点相同,则

2021-03-10 23:43:14 221

原创 漫画算法-学习笔记(17)

漫画算法-小灰的算法之旅(17)文章目录漫画算法-小灰的算法之旅(17)1. 什么是桶排序实现步骤代码实现总结1. 什么是桶排序桶排序: 是一种线性时间的排序算法,类似于计数排序所创建的统计数组,桶排序需要创建若干个桶来协助排序。实现步骤什么是桶(bucket)?每一个**桶(bucket)**代表一个区间范围,里面可以承载一个或多个元素。假设有一个非整数数列如下: {4.5,0.84,3.25,2.18,0.5}让我们开看看桶排序的工作原理:第一步,就是创建这些桶,并确定每一个桶的区间范

2021-03-09 21:50:42 144

原创 漫画算法-学习笔记(16)

漫画算法-小灰的算法之旅(16)文章目录漫画算法-小灰的算法之旅(16)1. 什么是计数时间排序初识计数排序代码实现计数排序的优化代码实现时间复杂度2. 总结1. 什么是计数时间排序计数排序:利用数组下标来确定元素的正确位置的算法,时间复杂度为线性时间、初识计数排序假设数组中有20个随机整数,取值范围为(0~10),要求用最快的速度把这个20个整数从小到大进行排序。如何给这些无序的随机整数进行排序呢?考虑到这些整数只能在(0,1,2,3,4,5,6,7,8,9,10)这11个数中取值,取值范围

2021-03-08 23:17:40 270

原创 漫画算法-学习笔记(15)

漫画算法-小灰的算法之旅(15)文章目录漫画算法-小灰的算法之旅(15)1. 什么是堆排序2. 代码实现3. 总结堆排序和快速排序比较1. 什么是堆排序堆排序:利用二叉堆的构建、删除、自我调整等基本操作来实现快速排序。二叉堆的特性最大堆的堆顶是整个堆中的最大元素最小堆堆堆顶是整个堆中的最小元素以最大堆为例,如果删除一个最大堆的堆顶(并不是完全删除,而是跟末尾的节点交换位置),经过自我调整,第2大的元素就会被交换上来,成为最大堆的新堆顶。如上图所示,在删除值为10的堆顶点后,经过调整,值为

2021-03-07 20:03:34 132

原创 漫画算法-学习笔记(14)

漫画算法-小灰的算法之旅(14)文章目录漫画算法-小灰的算法之旅(14)1. 什么是快速排序基准元素的选择元素的交换双边循环法代码实现单边循环法代码实现非递归实现1. 什么是快速排序和冒泡排序一样,快速排序也属于交换排序,通过元素之间的比较和交换位置来达到排序的目的。不同的是,冒泡排序在每一轮中只把一个元素冒泡到数列的一端,而快速排序则在每一轮挑选一个基准元素,并让其他比它大的元素移动到数列一边,比它小的元素移动到数列的另一边,从而把数列拆解成两个部分。这种思路就叫分治法。所谓分治法的思想:从

2021-03-07 20:00:30 299 3

原创 漫画算法-学习笔记(13)

漫画算法-小灰的算法之旅(13)文章目录漫画算法-小灰的算法之旅(13)1. 什么是冒泡排序冒泡排序代码实现冒泡排序的优化2. 鸡尾酒排序代码实现3. 总结鸡尾酒排序的优缺点是什么?1. 什么是冒泡排序什么是冒泡排序?冒泡排序(bubble sort):是一种基础的交换排序。冒泡排序的思想:把相邻的元素两两比较,当一个元素大于右侧相邻元素时,交换它们的位置;当一个元素小于或等于右侧相邻元素时,位置不变。冒泡排序:是一种稳定排序,值相等的元素并不会打乱原本的顺序。由于改排序算法的每一轮都要遍历所有元

2021-03-06 23:14:49 182

原创 漫画算法-学习笔记(12)

漫画算法-小灰的算法之旅(12)文章目录漫画算法-小灰的算法之旅(12)1. 什么是优先队列什么是优先队列?2. 优先队列的实现入队操作出队操作时间复杂度3. 代码实现4. 总结什么是树?什么是二叉树?二叉树的遍历方式有几种什么是二叉堆什么是优先队列1. 什么是优先队列队列的特点是什么?队列的特点: 先进先出(FIFO),入队列,将新元素置于队尾;出队列,队头元素最先被移出。什么是优先队列?优先队列不再遵循先进先出的原则,而是分为两种情况。最大优先队列:无论入队顺序如何,都是当前最大的元素优

2021-03-05 23:11:19 124

原创 漫画算法-学习笔记(11)

漫画算法-小灰的算法之旅(11)文章目录漫画算法-小灰的算法之旅(11)1. 什么是二叉堆什么是最大堆?什么是最小堆?2. 二叉堆堆自我调整插入节点删除节点构建二叉堆时间复杂度3. 二叉堆的代码实现代码实现1. 什么是二叉堆二叉堆:本质上是一种完全二叉树,它分两个类型。最大堆最小堆什么是最大堆?最大堆:最大堆的任何一个父节点的值,都大于或等于它左、右孩子节点的值。什么是最小堆?最小堆:最小堆的任何一个父节点的值,都小于或等于它左、右孩子节点的值。二叉堆的根节点叫作堆顶。最大堆和最小堆

2021-03-03 23:41:14 170 1

原创 漫画算法-学习笔记(10)

漫画算法-小灰的算法之旅(10)文章目录漫画算法-小灰的算法之旅(10)二叉树的广度优先遍历二叉树的层序遍历代码实现时间复杂度二叉树的广度优先遍历如果说深度优先遍历是在一个方向上“一头扎到底”那么广度优先遍历则恰恰相反;先在各个方向上各走一步,再在各个方向上走出第二步、第三步…直到各个方向全部走完。二叉树的层序遍历层序遍历:就是二叉树按照从根节点到叶子节点的层次关系,一层一层横向遍历各个节点。思路:采用**队列(FIFO)**来作为辅助结构,先将根节点放入到队列中,然后不断遍历队列。首先拿出根节

2021-03-03 21:26:39 115 1

原创 漫画算法-学习笔记(09)

漫画算法-小灰的算法之旅(09)文章目录漫画算法-小灰的算法之旅(09)二叉树遍历-非递归方式如何借助栈来实现二叉树的非递归遍历呢?前序遍历中序遍历后序遍历二叉树遍历-非递归方式二叉树的深度优先遍历还可以采用非递归的方式来实现,不过要稍微复杂一点。绝大多数可以用递归解决的问题,其实都可以采用另一种数据结构来解决—栈。因为递归和栈都具备回溯的特性。如何借助栈来实现二叉树的非递归遍历呢?前序遍历思路:在迭代算法中,思路演变成,每到一个节点A,就应该立即访问它。因为每棵树都是先访问其根节点。对节点的

2021-03-02 23:31:53 124

原创 漫画算法-学习笔记(08)

漫画算法-小灰的算法之旅(08)文章目录漫画算法-小灰的算法之旅(08)1. 二叉树的遍历1.1 为什么要研究遍历二叉树的遍历方式有哪些?1.2 深度优先遍历前序遍历(根左右)中序遍历(左根右)后序遍历(左右根)代码实现1. 二叉树的遍历1.1 为什么要研究遍历二叉树的遍历有什么特殊之处?在计算机程序中,遍历本身是一个线性操作。所以遍历同样具有线性结构的数组、链表是一件很容易的事情。反观二叉树,是典型的非线性数据结构,遍历时需要把非线性关联的节点转化成一个线性的序列,以不同的方式来遍历,遍历出的序

2021-03-02 00:17:19 439

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除