算法应用
文章平均质量分 68
最常见的算法应用面试题,带你三分钟搞懂,面试再也不虚。
喵呜刷题
来来来,我们一起组队学习!
展开
-
hash冲突如何解决
方法1:链地址法对于相同的哈希值,使用链表进行连接。(HashMap使用此法)原创 2022-05-21 10:19:55 · 907 阅读 · 0 评论 -
哈夫曼树相关算法
学校操场有N堆球需要把球挪到一块、力气使用为球的基数之和,如何将球挪到一块需要的力气最少?原创 2022-05-20 13:51:07 · 73 阅读 · 0 评论 -
算法核心-双指针问题
逆向指针:指针异动方向相反。同向指针:指针异动方向相同。快慢指针:一个指针快、一个指针慢。等距指针:两个指针一样快。多路指针:指针分别在多个链表或多个数组原创 2022-05-19 16:41:58 · 131 阅读 · 0 评论 -
算法核心-动态规划算法
动态规划算法将待求解问题拆分成一系列相互交叠的子问题,通过递推关系定义各子问题的求解策略,并随时记录子问题的解,最终获得原始问题的解,避免了对交叠子问题的重复求解。动态规划算法解决问题 (接雨水)给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,原创 2022-05-18 13:55:49 · 248 阅读 · 1 评论 -
算法核心-贪心算法
贪心算法就是遵循某种既定原则,不断地选取当前条件下最优的选择来构造每一个子步骤的解决方案,直到获得问题最终的求解。在对问题求解时,总是做出在当前看最好的选择。也就是说,不从整体最优上考虑,所做的仅是在某种意义上的局部最优解。原创 2022-05-17 10:07:38 · 426 阅读 · 0 评论 -
算法核心-分治算法
分治算法的核心思想是将一个规模很大的问题化简为n个规模较小的问题,这些子问题虽然独立而不同,但是问题的本质是一致的,从而达到分而治之的目的。原创 2022-05-16 10:04:03 · 413 阅读 · 0 评论 -
算法核心-回溯算法
回溯算法可以看成走迷宫,不知道出口在哪,所以只能不断深入,尝试不同的路线。但一旦找到出口便可以回溯到起点,辩清路线。原创 2022-05-15 10:39:52 · 231 阅读 · 0 评论 -
算法核心-广度优先遍历算法
广度优先遍历与深度优先遍历类似,也是查询的方法之一,他也是从某个状态出发查询可以到达的所有状态。但不同与深度优先遍历,广度优先遍历总是先去查询距离初始状态最近的状态。广度优先遍历算法解决问题 (引爆最多的炸弹)原创 2022-05-14 09:32:50 · 472 阅读 · 0 评论 -
算法核心-深度优先遍历算法
深度优先遍历算法是经典的图论算法,深度优先遍历算法的搜索逻辑跟它名字一样,只要有可能,就尽量深入搜索,知道找到答案,或者尝试了所有可能后确定没有解。原创 2022-05-13 14:17:38 · 630 阅读 · 0 评论 -
算法核心-哈希算法
哈希算法又称散列函数算法,是一种查找算法。把一些复杂的数据,通过某种函数映射关系,映射成一种易于查找的方式。原创 2022-05-12 11:07:13 · 403 阅读 · 0 评论 -
求最短路径问题
已知各城市之间距离,请给出从城市A到城市B的最短行车方案 or 各城市距离一致,给出需要最少中转方案。也就是,固定起始点的情况下,求最短路。原创 2022-05-11 10:21:55 · 1248 阅读 · 0 评论 -
Java删除排序数组中的重复项
不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。原创 2022-05-10 14:29:42 · 1026 阅读 · 0 评论 -
二叉树——求两个节点的最近公共祖先
利用后序遍历实现;对于当前节点cur,如果节点为null或者等于n1或n2中的一个,则直接返回cur;先处理左右子树,左子树返回left,右子树返回right;判断left和right;原创 2022-05-09 10:21:32 · 401 阅读 · 0 评论 -
单链表逆序
初始状态,prev是NULL,head指向当前的头节点A,next指向A节点的下一个节点B。首先从A节点开始逆序,将A节点的next指针指向prev,因为prev的当前值是NULL,所以A节点就从链表中脱离出来了,然后移动head和next指针,使它们分别指向B节点和B的下一个节点C。原创 2022-05-08 11:56:18 · 681 阅读 · 0 评论 -
用两个栈实现一个队列
最基础的思路。:始终维护s1作为存储空间,以s2作为临时缓冲区。(肯定不 OK)入队时,将元素压入s1。出队时,将s1的元素逐个“倒入”(弹出并压入)s2,将s2的顶元素弹出作为出队元素,之后再将s2剩下的元素逐个“倒回”s1。原创 2022-05-07 15:37:36 · 499 阅读 · 1 评论 -
Chandy-Lamport分布式快照算法
所谓分布式快照,实际上就是特定时间点记录下来的分布式系统的全局状态(global state)。分布式快照的主要用途有故障恢复(即检查点)、死锁检测、垃圾收集等。为了方便理解,我们仍然沿用原论文中的方法,将分布式系统抽象为一张有向图:顶点称为进程(process),边称为链路(channel)。下图就示出包含3个进程和4个链路的分布式系统。原创 2022-05-06 10:46:58 · 2292 阅读 · 0 评论 -
说说拼写纠错是如何实现的?
拼写纠错是基于编辑距离来实现;编辑距离是一种标准的方法,它用来表示经过插入、删除和替换操作从一个字符串转换到另外一个字符串的最小操作步数;编辑距离的计算过程:比如要计算batyu和beauty的编辑距离,先创建一个7×8的表(batyu长度为5,coffee长度为6,各加2),接着,在如下位置填入黑色数字。其他格的计算过程是取以下三个值的最小值:原创 2022-05-06 10:46:16 · 299 阅读 · 0 评论 -
说说你了解的字典树?
Trie的核心思想是空间换时间,利用字符串的公共前缀来降低查询时间的开销以达到提高效率的目的。它有3个基本性质:根节点不包含字符,除根节点外每一个节点都只包含一个字符。从根节点到某一节点,路径上经过的字符连接起来,为该节点对应的字符串。每个节点的所有子节点包含的字符都不相同。原创 2022-05-06 10:45:30 · 192 阅读 · 0 评论 -
说说分布式缓存一致性hash算法?
Hash 算法的一个衡量指标是单调性( Monotonicity ),定义如下:单调性是指如果已经有一些内容通过哈希分派到了相应的缓冲中,又有新的缓冲加入到系统中。哈希的结果应能够保证原有已分配的内容可以被映射到新的缓冲中去,而不会被映射到旧的缓冲集合中的其他缓冲区。原创 2022-05-06 10:44:42 · 316 阅读 · 0 评论