之前有补充过二叉搜索树的相关内容,传送门。我们知道一棵高度为h的二叉搜索树,它可以支持任何一种基本动态集合操作,其时间复杂度均为O(h)。因此,如果搜索树的高度较高时,这些集合操作可能并不比链表上 ...
KMP算法 关于字符串匹配的算法,最知名的莫过于KMP算法了,尽管我们日常搬砖几乎不可能去亲手实现一个KMP算法,但作为一种算法学习的锻炼也是很好的,所以记录一下。 KMP算法是根据三位作者 D.E.Knuth, J.H.Morris和V.R.Pratt 的名字来命名的,算法的全称是Knuth Morris Pratt算法,简称为KMP算法。 关于字符串匹配,我们假设要在字符串A中查找字符串B,那 ...
2020-02-16 16:04 0 1510 推荐指数:
之前有补充过二叉搜索树的相关内容,传送门。我们知道一棵高度为h的二叉搜索树,它可以支持任何一种基本动态集合操作,其时间复杂度均为O(h)。因此,如果搜索树的高度较高时,这些集合操作可能并不比链表上 ...
记录一下《算法导论》里关于动态规划的一些知识点以及自己的想法。 动态规划 动态规划是通过组合子问题来求解原问题的一种算法。动态规划应用于子问题重叠的情况,即不同的子问题具有公共的子子问题(子问题的求解是递归进行的,将其划分为更小的子子问题)。这种情况下,动态规划算法对每个子子问题只求 ...
在刷Leetcode的过程中,发现一个问题。如果按照题号来刷会遇到使用同一种算法的不同题目,如果不详细讲解就梳理的不够清晰,但是如果每次遇到相同类型讲解就太冗余。 于是萌生了按照专题讲解知识点的想法,找到了以下这本书。 本书以海量图解的形式,详细讲解常用的数据结构与算法,又融入大量的竞赛 ...
1、 执行 Python 脚本的两种方式 交互方式:命令行 Windows操作系统下,快捷键cmd,输入“python”启动交互式python解释器。 文件方式:python文件 ...
最近重新学习数据结构与算法以及刷leetcode算法题时,发现不少jdk自带的方法可以提升刷题的效率。这些小技巧不仅仅对刷算法题带来便利,对我们平时开发也是很有帮助的。本文以java语言为基础,记录了目前已经使用或看到过的一些小技巧,后续在刷题过程中,还会持续更新 ...
本文接着上一篇文章《LeetCode刷题总结-数组篇(上)》,继续讲第二个常考问题:矩阵问题。 矩阵也可以称为二维数组。在LeetCode相关习题中,作者总结的考点有:矩阵元素的遍历、矩阵位置的旋转、矩阵行或列次序的交换、空间复杂度为O(1)等。本期共12道题,2道简单题,8道 ...
最近刷题倒是没停,但是感觉大部分遇到的不是很适合拿来水博客,毕竟方法套路比较相似。年兄推荐下做了两道前缀和的题,感觉这类题型的思路很棒,也可以归纳成一个方法,故再来水一篇。题目均来自力扣Leetcode,传送门。 简单来说,前缀和适合于解决 连续,求和 相关的问题。遇到的问题如果包含相关 ...
数组是算法中最常用的一种数据结构,也是面试中最常考的考点。在LeetCode题库中,标记为数组类型的习题到目前为止,已累计到了202题。然而,这202道习题并不是每道题只标记为数组一个考点,大部分习题都有两到三个考点。比如,考查数组+哈希表、数组+动态规划+数学、数组+回溯 ...