漫画:Dijkstra 算法的优化
漫画中我们遗留了一个问题:如何求得最短路径的详细节点,而不仅仅是距离?在本篇中,我们将会给与解答。我们仍然以下面这个带权图为例,找出从顶点A到顶点G的最短距离。详细过程如下:第1步,创建距离表和前置顶点表。距离表的Key是顶点名称,Value是从起点A到对应顶点的已知最短距离,默认为无穷大;前置顶点表的Key是顶点名称,Value是从起点A到对应顶点的已知最短路径的前置定点。第2步,遍历起点A,....

漫画:什么是LRU算法?
————— 两个月前 —————用户信息当然是存在数据库里。但是由于我们对用户系统的性能要求比较高,显然不能每一次请求都去查询数据库。所以,小灰在内存中创建了一个哈希表作为缓存,每次查找一个用户的时候先在哈希表中查询,以此提高访问性能。很快,用户系统上线了,小灰美美地休息了几天。一个多月之后......———————————————什么是哈希链表呢?我们都知道,哈希表是由....

漫画:如何实现抢红包算法?
发出一个固定金额的红包,由若干个人来抢,需要满足哪些规则?1.所有人抢到金额之和等于红包金额,不能超过,也不能少于。2.每个人至少抢到一分钱。3.要保证所有人抢到金额的几率相等。小灰的思路是什么样呢?每次抢到的金额 = 随机区间 ( 0, 剩余金额 )为什么这么说呢?让我们看一个栗子:假设有10个人,红包总额100元。第一个人的随机范围是(0,100元),平均可以抢到50元。假设第一....

漫画:什么是字典序算法?
————— 第二天 —————算法题目:给定一个正整数,实现一个方法来求出离该整数最近的大于自身的“换位数”。什么是换位数呢?就是把一个整数各个数位的数字进行全排列,从而得到新的整数。例如53241和23541。小灰也不知道这种经过换位的整数应该如何称呼,所以姑且称其为“换位数”。题目要求写一个方法来寻找最近的且大于自身的换位数。比如下面这样: 输入12345,返回123....

漫画算法:判断2的乘方
小灰陷入了回忆当中......题目:实现一个方法,判断一个正整数是否是2的乘方(比如16是2的4次方,返回True;18不是2的乘方,返回False)。要求性能尽可能高。解法一:创建一个中间变量Temp,初始值是1。然后进入一个循环,循环中每次让Temp和目标整数比较,如果相等,则说明目标整数是2的乘方;如果不相等,则让Temp增大一倍,继续循环比较。当Temp大于目标整数时,说明目标整数不是2....

漫画算法:最小栈的实现
小灰回忆起当时的情景......题目:实现一个栈,带有出栈(pop),入栈(push),取最小元素(getMin)三个方法。要保证这三个方法的时间复杂度都是O(1)。小灰的想法:1.创建一个整型变量 min,初始值-12.当第一个元素进栈时,让min=0,即把唯一的元素当做最小值。3.之后每当一个新元素近栈,让新元素和min指向位置的元素比较大小。如果Stack[min]大于新元素,则min等于....

漫画算法:找出缺失的整数
小灰一边回忆一边讲述起当时面试的情景......题目:一个无序数组里有99个不重复正整数,范围从1到100,唯独缺少一个整数。如何找出这个缺失的整数?解法一:创建一个HashMap,以1到100为键,值都是0 。然后遍历整个数组,每读到一个整数,就找到HashMap当中对应的键,让其值加一。由于数组中缺少一个整数,最终一定有99个键值等于1, 剩下一个键值等于0。遍历修改后的HashMap,找到....

漫画算法:辗转相除法是什么鬼?
大四毕业前夕,计算机学院的小灰又一次顶着炎炎烈日,去某IT公司面试研发工程师岗位......半小时后,公司会议室,面试开始......小灰奋笔疾书,五分钟后......小灰的思路十分简单。他使用暴力枚举的方法,试图寻找到一个合适的整数 i,看看这个整数能否被两个整型参数numberA和numberB同时整除。这个整数 i 从2开始循环累加,一直累加到numberA和numberB中较小参数的一半....

漫画算法:如何判断链表有环?
漫画算法:如何判断链表有环?玻璃猫 程序员小灰 2016-09-26 08:50大四毕业前夕,计算机学院,正在四处求职的小灰碰到了同系的学霸大黄......小灰边说边回忆着上周去面试的情形......有一个单向链表,链表当中有可能出现“环”,就像下图这样。如何用程序判断出这个链表是有环链表?方法一:首先从头节点开始,依次遍历单链表的每一个节点。每遍历到一个新节点,就从头节点重新遍历新节点之前的所....

漫画:Bitmap算法 整合版
两个月之前——为满足用户标签的统计需求,小灰利用Mysql设计了如下的表结构,每一个维度的标签都对应着Mysql表的一列:要想统计所有90后的程序员该怎么做呢?用一条求交集的SQL语句即可:Select count(distinct Name) as 用户数 from table whare age = '90后' and Occupation = '程序员' ;要想统计所有使用苹果手机或者00....

本页面内关键词为智能算法引擎基于机器学习所生成,如有任何问题,可在页面下方点击"联系我们"与我们沟通。