自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(18)
  • 收藏
  • 关注

原创 springboot中路径默认配置与重定向/转发所存在的域对象

今天在写项目的时候,突然发现引用js的时候路径不匹配,让我再次对路径问题产生了疑问,通过查阅springboot官网可以发现,在springboot中查找静态资源的时候,会默认在static、public、resources下查找,官网中也提出可以通过。controller层转发:session和request域中的值都会存在,转发回服务端controller层,接收传参map/model/request都可以设置request域。在项目中,使用thymeleaf渲染页面的时候,

2024-06-08 21:19:18 574

原创 java中集合/堆/队列/栈等不同接口与类的特性总结

LinkedList:实质链表(允许 null 元素的存在+允许重复元素+用于首部或指定位置进行添加和删除较多的情况下。LinkedList 实现了 List 接口,可进行列表的相关操作。

2024-03-31 21:50:01 1785 1

原创 算法学习之数论基础(持续更新)

快速得到一个a的b次方,复杂度为log2n。

2024-03-23 17:02:29 951 1

原创 做算法题各种题类与形式上的总结(不断更新)

DFS不保证找到的是最短路径,如果需要找到最短路径,通常会使用取最小值或者宽度优先搜索(Breadth-First Search,简称BFS)或Dijkstra算法等其他算法。动态规划通常用于具有重叠子问题和最优子结构的问题,其中重叠子问题指的是在解决问题的过程中,需要反复计算的子问题子问题也需要前一个子问题的答案。而最优子结构则是指问题的最优解可以由其子问题的最优解组合而成。把问题分解为多个小问题,每个小问题的最优解组合成原问题的解。

2024-03-16 11:46:00 1501 1

原创 马踏棋盘/骑士周游思路+DFS+贪心算法优化

遍历points列表,如果当前位置未被访问过,则递归调用traversalChessboard方法进入下一层递归(假设下一个可以走的点)直到棋盘所有点可以被完整走完,也就是第7步的判断,否则回溯上一个点,寻找points里的其他点继续尝试递归。

2024-01-28 22:49:44 970

原创 迪杰斯特拉与弗洛伊德算法思路记录与对比

Graph 类封装了图的顶点数组和邻接矩阵,并提供了显示图的邻接矩阵和运行 Dijkstra 算法的方法 dsj。dsj 方法中首先创建 VisitedVertex 对象 vv,并将起始点 i 加入已访问顶点集合中;之后循环遍历所有顶点,每次选择当前距离起始点最近的未访问顶点 j,然后更新以 j 为前驱节点时到各个顶点的距离和前驱节点数组,直至所有顶点都被访问过。

2024-01-28 22:41:51 463

原创 普利姆与克鲁斯卡尔算法思路记录与对比

例如指定A开始,当前最短的是2,所以修AGA和G顶点附近最短的路径是GB,3,所以修AGBA和G和B顶点附近最短的路径是GE,5,所以修AGBE到了目前,AGBE四个顶点附附近最短的路径是AB和EF,但是因为连接了AB会构成ABG回路(A和B已经被访问过),因此选择EF。后面都是上面的这种规则,直到构成n-1条边。

2024-01-28 11:21:09 1707

原创 贪心算法题目与思路记录

首先定义了一个 HashMap<电台名,Hashset<String>> broadcasts 来存储每个电台覆盖的地区;然后定义了一个 HashSet allAreas 包含所有需要覆盖的地区。接着使用贪婪算法来选择最少的电台,以覆盖所有地区。采用了一个 while 循环,每次循环中选择覆盖未覆盖地区最多的电台,并将已覆盖的地区从 allAreas 中移除,直到 allAreas 为空为止。在循环中,使用 temp 变量暂存当前电台覆盖的地区,并通过比较找出覆盖未覆盖地区最多。

2024-01-27 17:03:45 422

原创 字符串匹配KMP算法

2.1:遍历i,i从0开始,i指向str1索引,j也从0开始,当i与j对应str1与str2的下标一致时,j++,再进行对比,当j>0且i与j对应str1与str2的下标不一致,则把j设为next[j-1](前面一个有这种规律的终点再与i下标对应值比较,直到j为0,也就是从头开始比较,如果j不为0,则也不会重头匹配,不好再返回重新对比,i一直都是在++)1.2:next[x]的含义是:其的值表示字符串下表为next[x]对应的值是前一个有这种规律的终点。①:创造子串的部分匹配表,通过KmpNext方法。

2024-01-27 16:29:20 375

原创 动态规划的题目与思路记录

变量w:存放物品重量变量val:存放物品对应价值变量v[i][j]:前i个物品与背包容量为j的情况下,背包可以装下的最大价值变量path[i][j]:v[i][j]对应的path,表示当前v的ij情况下,是否与i-1的价值与物品相同初始化v和path:他们的[i][0]和[0][j]都为0,当i=1的时候对应w[i-1]和val[i-1]和第一个物品①遍历行i与列j,有两种可能的方案,哪个大则使用哪个方案1:当前这个格子比上一个没有这种物品的格子价值小,则使用上一个格子的方案。

2024-01-27 15:12:57 349

原创 分治算法的题目与思路记录

①假设有n个盘子,先将n-1个盘子从a移到b②再将最后一个n号盘子从a移到c③再将b盘中的n-1个盘子从b移到cps:当n-1个盘子要从a移到b的时候,由于n-1给盘子不是最顶的盘子,因此会引出n-2个盘子要从a移到b的问题,再把最后一个n-1号盘子从a移到c,再将b盘中的n-2个盘子从b移到c,整个过程中是将n个盘子一直递归为只有一个盘子的子问题。

2024-01-27 14:48:02 314

原创 多路查找树与2-3树添加如何形成的步骤

传统的二叉树插入规则:1) 2-3 树的所有叶子节点都在同一层.(只要是 B 树都满足这个条件)2) 有两个子节点的节点叫二节点,二节点要么没有子节点,要么有两个子节点.3) 有三个子节点的节点叫三节点,三节点要么没有子节点,要么有三个子节点4) 当按照规则插入一个数到某个节点时,不能满足上面三个要求,就需要拆,先向上拆,如果上层满,则拆本层, 拆后仍然需要满足上面 3 个条件。5) 对于三节点的子树的值大小仍然遵守(BST 二叉排序树)的规则。

2024-01-25 16:58:38 883

原创 图的深度优先与广度优先(dfs和bfs)思路记录

①遍历判断每个节点是否被访问,如果已被访问则跳到下一个节点,否则进入第②步98行代码②输出目前这个节点a,并且将其isVisited值变为true。82、83行代码③通过getFirstNeighbor方法,得到目前这个节点a的下一个邻结节点下标b,84行代码情况1:如果返回-1则没有邻结节点,说明没有连该节点,返回第①步跳到下一个未被访问的节点。情况2:如果有则判断b是否被访问(87行代码),如果已被访问则通过getNextNeighbor方法获取目前这个节点a的下一个非b的邻结节点c,90行代码。

2024-01-21 18:16:21 952 1

原创 平衡二叉树的思路记录

先看图片,如果对于10的左子节点的右边>10的左子节点的左边,还不进行双旋转会产生的后果,就是单旋转后,还是不符合平衡二叉树的规范,所以我们需要先将10的左子节点(节点7先进行左旋转,然后再进行节点10的右旋转就可以变成图二的样子)//创建一个 AVLTree 对象//添加结点i++) {//遍历System.out.println("前序遍历");System.out.println("在平衡处理~~");

2024-01-21 11:59:40 397 1

原创 排序二叉树的思路记录

BinarySortTree类的add方法中判断是否有root节点,没有的话设置,有的话传入node2类的add方法。传入的节点四种处理方式,要么左递归、右递归、要么添加到节点的左边、要么添加到节点的右边,需要的判断有很多不好下手。但通过之前我《对于多种条件如何分布的经验探讨》文章中,由于是树,可以在节点大小判断为第一个小前提。所以可能①:当要插入的节点小于当前节点,要么左递归要么插入当前节点的左边(由当前节点的左节点是否为空决定)

2024-01-20 00:39:00 368

原创 减少存储空间的编码-哈夫曼编码

对于通信领域的编码,是一个发展很长的过程,从一开始的定长编码,变长编码,到现在的哈夫曼编码。定长编码:将每个字符转为ascii对应的数值,再转为二进制存储变长编码:通过字符出现的次数进行设置数值,再为整个字符串进行编码哈夫曼编码:通过构建哈夫曼树,解决了其他编码没有前缀编码的问题(就是每个字符的编码都不能是其他字符编码的前缀,就以定长编码上面的图做例子,发送的是i like....,但是你也可以把100解析为k而不是原先的i like)

2024-01-18 23:26:34 634 1

原创 对java中byte与char区分

char是字符数据类型,无负号(只有正数,负数会报错),占2个字节,0-65535,输出为字符。byte是字节数据类型,有正负号(符号区分),占一个字节。-128~127,输出为数字。在底层中,例如int,底层中存储与计算是以补码的形式,只有输出的时候会转为原码输出。当强制转换时候,会去除高位是数字,例如int强转byte,会将32位砍剩最后8位输出。

2024-01-17 00:19:25 649 1

原创 java中io流的复习总结+序列化+顺序化

字节流InputStream:InputStream是所有字节输入流的抽象基类,前面说过抽象类不能被实例化,实际上是作为模板而存在的,为所有实现类定义了处理输入流的方法。FileInputSream:文件输入流,一个非常重要的字节输入流,用于对文件进行读取操作。PipedInputStream:管道字节输入流,能实现多线程间的管道通信。

2024-01-16 23:56:00 1847 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除