- 博客(12)
- 收藏
- 关注
原创 KMP算法代码实现
最浅显易懂的 KMP 算法讲解KMP的next数组求法详解KMP 算法能够在O(M+N)时间复杂度内实现字符串的模式匹配问题。其主要思想是使用模式串的最长公共前后缀数组来去除重复判断操作。下面用一个例子介绍如何计算next数组。下面这个例子是kmp算法利用next数组进行求解找出字符串中第一个匹配项的下标
2022-12-03 16:06:02
198
原创 java join方法底层原理
join底层是用wait实现的,使用了并发设计模式中的保护性暂停模式。join的用法很简单,在线程t1中调用t2.join(),代表t1线程会等待t2线程执行结束。如果加个参数timeout,代表最多等待timeout就不等了。在看源码之前,需要搞清楚当前运行的线程和调用方法的线程的区别。下面这个案例中,在main线程中调用t1.function(),那么执行到function()方法内部时,当前线程仍然是main,调用function的线程对象是t1。public class Main {
2022-05-17 11:22:43
455
原创 从零开始,在linux服务器的tomcat9中部署war包(前后端不分离,外部tomcat)
Linux不同环境变量文件的比较文章目录0. 版本信息1. 在服务器上安装java2. 安装mysql3. 数据库迁移4. 安装Tomcat5. 项目打包1. vue项目打包2. spring boot项目打包6. 部署在tomcat根目录下7. 我遇到的一些坑8. 需要注意的地方0. 版本信息tomcat版本:9.0.62.0终端进入tomcat文件夹,输入sudo ./bin/version.sh即可查看Ubuntu版本:18.04mysql版本:8.0.28vue3前后端不分离方式下
2022-04-18 22:10:06
5437
原创 实现前缀树
问题描述:给定一个字符串数组,判断这个数组中是否包含某一个字符串word,或判断这个数组是否包含前缀prefix。暴力的实现方法是将给定的字符串word或prefix与字符串数组一一比对,查找到了则返回true,否则返回false。这种情况下的时间复杂度为O(∣S∣n)O(\lvert S \rvert n)O(∣S∣n),空间复杂度O(∣T∣)O(\lvert T \rvert)O(∣T∣)。其中∣S∣\lvert S \rvert∣S∣代表给定字符串长度,nnn代表数组长度,∣T∣\lvert T \
2022-03-24 20:49:08
100
原创 单调队列与单调栈(总结及leetcode例题)
文章目录单调队列滑动窗口最大值绝对差不超过限制的最长连续子数组单调栈单调队列单调队列是满足单调性的队列,在插入某个元素前,将队尾不满足单调性的元素出队。维护单调队列的单调性,来解决问题。单调队列和滑动窗口一样,不属于什么特殊的数据结构或编程思想,可以理解成一个解题技巧。滑动窗口最大值只有满足在当前窗口下,其右边没有比这个元素更大的值这个条件时,元素才在队列中。因此在某一个滑动窗口下,若某个元素不在队列中则意味着其右边有比它更大的值,而滑动窗口是向右滑动的,因此这个不在队列中的元素一定比其右边更大
2022-03-24 20:41:31
774
原创 图论经典算法总结及leetcode例题(拓扑排序、并查集、dijkstra、floyd、prim、krustral、bellman-ford)
文章目录广度优先搜索深度优先搜索拓扑排序并查集(Disjoint-set)Dijkstra算法求单源最短路径Bellman-Ford求单源最短路径Floyd求全图最短路径Kruskal算法求最小生成树Prim总结广度优先搜索广度优先搜索可以用来求解无权图的最短路径问题。广度优先搜索每遍历到下一层则路径长度加一,遍历到终点时的路径长度即是问题的解。深度优先搜索深度优先搜索是图中非常基础的算法,回溯法、和拓扑排序都可以通过深度优先搜索完成。深度优先搜索还可以判断图中是否存在环路:记录各个节点的状态,0
2022-03-18 22:04:29
1879
原创 二叉树的四种遍历总结(Morris算法总结)
文章目录前序遍历栈Morris中序遍历栈Morris后序遍历栈Morris层序遍历队列总结前序遍历力扣:二叉树的前序遍历栈前序遍历按照 根节点 左子树 右子树 的顺序进行遍历。由于根节点先遍历,因此每次将节点出栈时,按从右到左的顺序将子节点全部入栈,就可以保证按从左到右的顺序遍历所有子树。即前序遍历这种方法可以推广到k叉树的前序遍历class Solution { public List<Integer> preorderTraversal(TreeNode root) {
2022-03-14 17:02:34
989
原创 Java基础总结
继承:子类无法继承父类的static方法和变量。子类可以继承父类的private成员变量,但是看不到。但是可以用父类提供的public方法改变这个成员变量。父类被final修饰的类可以被继承,不能被修改,至于能不能被看到取决于private。//使用这种方法创建的对象son,只能使用Father拥有的变量和方法。Father son = new Son();Java关键字:abstract、assert、boolean、break、byte、case、catch、char、class、c
2021-10-21 19:42:04
121
转载 最大子序和的O(n)算法
最大子序和的O(n)算法基本思想:使用一层循环,num记录当前遍历值。sum记录从前方某个位置开始,到当前这个位置的和。ans记录所出现过得所有sum值的最大值,即前方子串的最大值。当sum>0则sum+=num,当sum<=0则sum=num。因为当sum>0时,如果sum+num>0,则当前可以直接加,如果sum+num<=0则说明之前的字串已经对后面没用了,在下次循环时sum就等于num了。当sum<=0说明前面子串对已经没用了,ans已经记录下来了之前子串的最
2021-10-19 10:18:31
136
原创 firefox添加百度搜索引擎
1、设置–搜索–默认搜索引擎–百度搜索2、如果默认搜索引擎中没有百度搜索,需要自己添加设置–搜索翻到最下面,点击“查找更多搜索引擎”在上面的输入框中输入“baidu”,点击search on baidu点击添加,注意会出现弹窗,把下面的小方框选上,点击ok,再重复步骤1即可...
2021-10-09 15:36:54
2104
原创 Ubuntu20.04中使用搜狗输入法
Ubuntu20.04中使用搜狗输入法1、根据官网进行操作https://pinyin.sogou.com/linux/help.php2、点击右上角键盘3、点击configure current input method4、点击加号,选择搜狗输入法5、将搜狗输入法放到第一位
2021-10-09 15:27:41
168
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人