算法
数据结构与算法
百里江山
積極進取力爭上游。
展开
-
golang队尾者的幸运编号
题目/** 约瑟夫环问题: * N个人排成一队,从1到5轮流报数,报5的是幸运者,出列 * 报到队尾后,从队尾接着报,依此循环 * 问:排在队尾的人是第几名幸运者? * N为小于100000的正整数 * 例如:1人排成一队,他就是第一名幸运者 * 3人排成一队,队尾是第二名幸运者 * 5人排成一队,队尾是第一名幸运者 * 8人排成一队,队尾是第三名幸运者 * * 输入:队伍...原创 2019-12-29 23:10:49 · 143 阅读 · 0 评论 -
golang约瑟夫环
题目约瑟夫问题是个有名的问题:N个人围成一圈,从第一个开始报数,第M个将被杀掉,最后剩下一个,其余人都将被杀掉。例如N=6,M=5,被杀掉的顺序是:5,4,6,2,3,1。解题一递推方法,推算出公式:f(n)=[]...原创 2019-12-29 22:17:58 · 313 阅读 · 0 评论 -
面试题:整数数组拼成一个最小或最大的数
其实这道题的本质是一个排序问题.不管求最大还是最小, 我们都可以使用排序算法解决. 普通排序是升序还是降序,主要看交互比较代码,这里求最小值相当于一个升级, 求最大值相当于一个降序.这道题的特殊就在于求数组所有数字组成在一起最小值.如12和9, 直接观察就能看出129比912要小, 所以我们排序可以抽象为m与n两个数据,相当于mn与nm相比.再结合使用快速排序或冒泡排序都可以啦. 关键在于这个...原创 2019-12-19 14:57:15 · 499 阅读 · 0 评论 -
面试题: 按顺时针打印矩阵
存在二种解题思路: 一种是递归解法,一种是层层递进解法图解递归解法如图所示, 一个5*5的矩阵先打印最外层的圈, 然后剩余最里层3*3的矩阵, 如图.将3*3的矩阵继续打印最外层,思路与打印最外层思路一样,我们就可以考虑使用递归实现.最后只剩余一个元素,也可以看成一个矩阵,不过不同大小的矩阵会出现不同形状的矩阵.共3种情况, 如下图.如图所示, 共三种情况一个方向的情况...原创 2019-12-17 14:28:11 · 440 阅读 · 0 评论 -
golang环形队列实现
Table of Contents什么是环形队列实现环形队列图示过程golang版代码实现过程参考全部代码什么是环形队列在一个指定大小的数组里循环写入数据,借用二个指针分别实现入队标记与出队标记.也体现了指针的大好用处,请深入体会.大有裨益.如图所示,一个环形队列.含有二个指针:队列头指针,队列尾指针.实现环形队列图示过程初始化一个数组大小为6的环形...原创 2019-11-08 11:13:18 · 391 阅读 · 0 评论 -
快速排序不同优化的版本
文章目录两种思路填坑法指针交换法可以优化的部分改良代码两种思路填坑法指针交换法首先找最左边的值做基准值:p, 然后i指针代表最左边, j指针代表最右边i指针每次向右移与p值比较,如果i < p则右移,否则停止j指针每次向左移与p值比较,如果j > p则左移,否则停止i,j指针都停止后再 i与j的值交换再进行一次循环.直到i与j重合, 然p值填到i与j重合的位置....原创 2019-10-12 19:11:48 · 136 阅读 · 0 评论 -
二叉权的理解与判断
首先推荐一个在线图形化数据结构在线图形化数据结构二叉树其实可以看成一个链表的变种, 链表多个指向一个简单的二叉树右结点必须大于父结点, 左结点必须小于父结点50是根结点(也称父节点)45结点小于根节点, 则做左结点.而55结点大于根结点(即50),则做右结点.以次类推如果判断一棵树是否是二叉树如上图, 50的左边叫左子树, 50的右边叫右子树.左子树所有的结点...原创 2019-09-26 17:38:28 · 184 阅读 · 0 评论 -
你的冒泡排序写对了吗?
排序算法的好坏,决定着你的程序的效率, 需要从3个维度考虑.a. 时间复杂度最好情况,最坏情况,平均情况b.时间复杂度的系数, 常数, 低阶,通常是指数据规模c.比较次数和交换次数这里列举两种常见的冒泡算法第一种外循环与内循环比较再交换外循环的i每次都与内循环里的每一个元素进行比较, 再交换function BubblingSort($list) { $s = mic...原创 2019-10-09 22:47:27 · 111 阅读 · 0 评论 -
golang快排2种实现方法
文章目录思路第一种思路第二种思路第一种思路的代码实现测试第二种思路的代码实现测试源码思路快排的思想就是分治法,将问题拆解成小问题, 解决了小问题大问题就解决啦, 蛤又有点类似二分思想第一种思路每一轮的排序需要找数组最中间的值做为基准值然后将小于基准值的交换到左边, 大于基准值的交换到右边直到右边的指针偏移到最左边, 左边的指针偏移到最右边.第二种思路每一轮的排序找第一个元...原创 2019-10-10 17:16:59 · 296 阅读 · 0 评论