随笔分类 - 算法
摘要:引言 在一张固定地图上选择一条路径,当存在多条可选的路径之时,需要选择代价最小的那条路径。我们称这类问题为最短路径的选择问题。解决这个问题最经典的算法为Dijikstra算法,其通过贪心选择的步骤从源点出发逐步逼近目标点,从而得到起始点与目标点的最短路径。A*算法是在Dijikstra算法上做了改进
阅读全文
摘要:引言 我们可能会有这样的一种需求,像是打车软件中呼叫附近的车来接送自己,或者是在qq中查看附近的人。我们都需要知道距离自己一定范围内的其它目标的集合。如果将上面举例的功能抽象出来,就是要实现以某个点为中心,以一定的距离为半径,在空间中查找其它点所构成的集合。诚然,当空间中点的数目较少时,我们可以采用
阅读全文
摘要:今天想和大家分享一个问题的解决办法,这个问题是自己在项目开发的过程中遇到的。经过思考和对资料的查找,最终想出了该问题的解法,趁着周末有点时间就把它整理并分享出来。 在描述问题之前,需要先了解涉及到的名词概念,便于对后续内容的阅读。 名称解释 sku(仓储相关概念):Stock Keeping Uni
阅读全文
摘要:前言: 本题来自leetcode第184场周赛的第二小题。以前参加过周赛,觉得很有趣。苦于最近一段时间比较忙就没坚持参加了(实际上是借口来着....),由于昨晚思考一些事情,导致睡不着,所以起得有点早,就参加了本场周赛,然后就碰到了这道题。 这题本身并不难,但是在比赛结束后,参看了别人的题解。基本都
阅读全文
摘要:本题解从统计数字出现次数的解题方式开始讲起,再推导出逐位统计出现次数的解题方式,最终得出状态机解题方法,期望以循序渐进的方式得出最终代码的思想。
阅读全文
摘要:问题:如何得到链表中的倒数第k个元素? 一种简单的思路是遍历链表一遍,并统计出链表中节点的数目,然后计算出倒数第k个元素到链表头节点的元素的距离,然后得到对应的结果。但是,我们能否有一种更加简便的方式来得到倒数的第k个元素的结果呢?答案肯定有啦,不然我也不会总结成博文了...
阅读全文
摘要:问题:如何得到一个链表的中间元素? 相信,这个问题对于刚入门编程的人来说,都不会难,最自然而然的想法是先遍历一遍链表,统计链表中的元素的个数,之后,再走一遍链表,所走的步长为链表长度的一半。这样就能获得链表的中间元素的值。但是,我们能不能有一种方法是只走一遍链表便得到结果的呢
阅读全文
摘要:问题:如何判断一个单向链表中是否存在环? 例如: 解题思路: 从一个实际的生活场景出发,两个人,在一个环形的操场上跑步的时候,如果有一个人跑得比另一个人还要快,那么,在n圈之后,这两个人总会在操场上的某个点相遇。将操场类比于链表中存在的环路径,将两个人看成两个指针,那么这道题
阅读全文
摘要:相关介绍: 根据树的特性可知,连通图的生成树是图的极小连通子图,它包含图中的全部顶点,但只有构成一棵树的边;生成树又是图的极大无回路子图,它的边集是关联图中的所有顶点而又没有形成回路的边。 一个有n个顶点的连通图的生成树只有n 1条边。若有n个顶点而少于n 1条边,则是非连通
阅读全文
摘要:求解最大公约数的两个算法(辗转相除法和更相减损术),及其比较
阅读全文
摘要:相关介绍: 给定一个数组,找出该数组中第n大的元素的值。其中,1midNumber&&lowlow) return QuicklySortedMind(th,low+1,highs); //当找到的元素的位置在想要找的元素的位置的右边时,从左边继续寻找 else return Quick
阅读全文
摘要:相关介绍: 求取数组中最大连续子序列和问题,是一个较为“古老”的一个问题。该问题的描述为,给定一个整型数组(当然浮点型也是可以的啦),求取其下标连续的子序列,且其和为该数组的所有子序列和中值为最大的。例如数组A={1, 3, 2, 4, 5},则最大连续子序列和为6,即1+3+( 2)+
阅读全文
摘要:相关介绍: 汉诺塔问题是一个通过隐式使用递归栈来进行实现的一个经典问题,该问题最早的发明人是法国数学家爱德华·卢卡斯。传说印度某间寺院有三根柱子,上串64个金盘。寺院里的僧侣依照一个古老的预言,以上述规则移动这些盘子;预言说当这些盘子移动完毕,世界就会灭亡。这个传说叫做梵天寺之塔问题(T
阅读全文
摘要:相关介绍: 该算法用于求得一个字符串形式的表达式的结果。例如,计算1+1+(3 1)\ 3 (21 20)/2所得的表达式的值,该算法利用了两个栈来计算表达式的值,为此,称为双栈法,其实现简单且易于理解。但其要求将我们平时所看到的表达式的模式转化为完全加括号的形式。如表达式,1+1+(3
阅读全文
摘要:相关介绍: 括号分隔符匹配问题是指,判断所输入的字符串表达式中的括号是否匹配的问题,例如1+(12+2)\ (1+2)便是一个括号分隔符匹配的表达式,而(12+1) 4+(12/2]就是一个括号分隔符不匹配的表达式 判断一个表达式括号分隔符是否匹配,其思路如下:依次读取该表达
阅读全文
摘要:相关介绍: 在java中,整数是有最大上限的。所谓大数是指超过整数最大上限的数,例如18 452 543 389 943 209 789 324 233和8 123 534 323 432 323 432 123 212 443就是两个大数,在java中这是无法用整型int变量或长整型l
阅读全文

浙公网安备 33010602011771号