夯实-算法
_吟游诗人
在昨天的未来里活成回忆
展开
-
简单复习最小生成树算法-Prim和Kruskal
参考资料:https://blog.csdn.net/qq_41754350/article/details/81460643https://blog.csdn.net/qq_41754350/article/details/81271567https://zhuanlan.zhihu.com/p/34922624Prim算法Prim针对点,而Kruskal针对边。Prim只适合无向带权图。维持一个集合,一开始选定一个点作为初始集合,另维持一个prev和dist列表。dist列表表示初始集合到原创 2021-04-10 09:32:18 · 805 阅读 · 0 评论 -
简单复习最短路算法-Floyd和Dijkstra
Floyd算法是求每一个顶点到每一个顶点间的最短距离,Dijkstra是求指定顶点到其余所有顶点间的最短距离。**Floyd思想:**不断加入新的中间结点,来判断加入新节点会否使得某点到其余点距离更近。for i in range(len(V)): # 中间结点 for j in range(len(V)): # 起始顶点 for k in range(len(V)): # 结束顶点 if dist[j][k] > dist[j][i] + dist原创 2021-04-09 23:15:07 · 780 阅读 · 0 评论 -
取m和n的中位数溢出解决办法
在LeetCode上刷一道二分的简单题,需要计算m和n的中位数。通常的想法是直接如下即可:int mid = (m + n) / 2;然而mid存在溢出的风险,一种简单的解决办法是把mid的类型改成 long long,如下long long mid = (m + n) / 2;但是改成long long就没意思了,如何优雅一点呢?我首先想了另一个办法,既然是相加再除以2,那除以2后再相加不就好了,即如下int mid = m / 2 + n / 2;这种办法看似正确,然而是存在问题的。原创 2020-12-22 15:44:23 · 390 阅读 · 0 评论 -
字符串匹配算法-Sunday
以往不论是上课还是各种资料书上,看到关于字符串匹配的算法,大抵都是KMP了。然而KMP的next数组理解起来颇为费劲,且容易忘记。在LeetCode刷题中偶然发现了一个叫Sunday的算法,不仅容易理解,且经过其他博主测评,Sunday的效率还要高于KMP算法,因此本文记录一下Sunday算法的思路。参考资料:Sunday 解法KMP、BM、Sunday、Horspool、strstr字符串匹配算法的性能比较首先briefly陈述一下问题即获得模式串第一次在目标字符串中出现的位置。Sun原创 2020-12-15 17:00:50 · 185 阅读 · 0 评论