18、算法与数据结构 - 实战:KMP算法
普通的字符串匹配有什么问题? 比如字符串是 aaaaaaaaaaaaaab,匹配串是aaab 遍历字符串,一个个位置比较 aaaaaaaaaaaaaab aaab ↑ 当比较到第三位,才知道匹配失败 然后来到下标1 aaaaaaaaaaaa...
普通的字符串匹配有什么问题? 比如字符串是 aaaaaaaaaaaaaab,匹配串是aaab 遍历字符串,一个个位置比较 aaaaaaaaaaaaaab aaab ↑ 当比较到第三位,才知道匹配失败 然后来到下标1 aaaaaaaaaaaa...
斐波那契第N项,矩阵求法 /** * 斐波那契第N项,矩阵求法 * Created by huangjunyi on 2022/9/4. */ public class FibonacciProblem01 { public static ...
公众号:“皇子谈技术”主理人
什么是滑动窗口 首先题目给定的参数一般是一个数组 有两个指针,例如l指针和r指针,l指针和r指针的运动方向是相同的,并且l指针不能超过r指针 一个数从一边进来,从一边出去 这种做法的时间复杂度O(n),因为每个数只进窗口一次,出窗口一次,比...
什么是动态规划 已经走过的分支,用一张表记着,下次遇到相同的分支,直接从表中拿值,不走重复的支路。 比如斐波那契数列,求f(n),则要计算f(n-1),f(n-2),而计算f(n-1)时,则要计算f(n-2),f(n-3),当计算完f(n-...
汉诺塔问题 /** * 汉诺塔问题 * Created by huangjunyi on 2022/9/1. */ public class Recursive01 { public static void move(int level, ...
数据结构 点 /** * 图中的点 * Created by huangjunyi on 2022/8/30. */ public class Node { //点的值 public int value; //入度 public int i...
并查集解析 并查集: 有若干样本,类型为T, 一开始每个都是自己为一个集合。 有两个方法:isSameSet、union, isSameSet(T a, T b),返回两个样本是否在一个集合中, union(T a, T b),把a样本和b...
给定一个字符串数组,把数组里的所有字符串拼接起来,返回所有拼接结果中字典序最小的拼接结果 贪心解题方法论: 贪心解法无需证明正确性 写一个暴力解,与之进行比较,如果在任何样本下出来的结果都是一样的,则这个贪心策略就是正确的 错误的贪心策略:...
给定一个二叉树,判断是否是平衡二叉树 如果左子树是平衡二叉树,并且右子树是平衡二叉树,并且两子树高度差不大于1,则当前子树是平衡二叉树。 二叉树递归: 1、 定义信息体; 2、 确定basecase返回的信息; 3、 左右子节点递归收集信息...
不使用递归,实现二叉树的前序、中序、后续遍历 前序: 1、 定义一个栈结构; 2、 定义一个cur指针,接收从栈中弹出的节点; 3、 弹出栈顶节点打印,先压入右节点,再压入左节点; 后序: 1、 定义两个栈结构; 2、 定义一个cur指针,...