- 博客(80)
- 收藏
- 关注
原创 leetcode217_组合优化
找出所有相加之和为 n 的 k 个数的组合,且满足下列条件:只使用数字1到9每个数字 最多使用一次返回 所有可能的有效组合的列表。该列表不能包含相同的组合两次,组合可以以任何顺序返回。
2023-05-29 20:47:49
681
原创 Tomcat服务器的可用空间仍不足以将资源添加到缓存中。
在跑代码的时候,不停的发出警告:INF/classes/target/classes/target/springMVC-demo2-1.0-SNAPSHOT/WEB-INF/classes/target/springMVC-demo2-1.0-SNAPSHOT/WEB-INF/classes/target/springMVC-demo2-1.0-SNAPSHOT/WEB-INF/classes/target/springMVC-demo2-1.0-SNAPSHOT/WEB-INF/classes/targ
2023-05-26 19:03:35
455
原创 leecode77——组合(回溯算法)
其实回溯算法和我们常说的 DFS 算法非常类似,本质上就是一种暴力穷举算法。回溯算法和 DFS 算法的细微差别是:回溯算法是在遍历「树枝」,DFS 算法是在遍历「节点」。
2023-05-24 10:56:41
673
原创 leecode530—二叉搜索树的最小绝对差
if(root . val == target) // 找到目标,做点什么 if(root . val < target) BST(root . right , target);如果遇到在二叉搜索树上求差值、最值等,就把他想象成在一个有序数组上求最值、差值。二叉搜索树如果采用中序遍历,就是一个有序数组。在一个有序数组上求最值岂不是很简单。// 记录上一个遍历的结点 int result = Integer . MAX_VALUE;//左 traversal(root . left)
2023-05-23 10:41:40
428
原创 Leecode98
给定一个二叉树,判断其是否是一个有效的二叉搜索树。假设一个二叉搜索树具有如下特征:节点的左子树只包含小于当前节点的数。节点的右子树只包含大于当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。
2023-05-22 19:32:34
421
原创 Navicat 连接MySQL数据库出现错误:2059 - authentication plugin ‘caching_sha2_password‘的解决
看提示是密码加密问题,初学者或者装这个软件可能会出现的问题,需要使用cmd命令刚开始我以为是装的MySQL版本出现了问题,后来发现并不是,然后使用cmd连接数据库,连上了但是为什么还是报错?这个时候我们可以看到报错的信息里面有 'caching_sha2_password” ,应该和密码有关。
2023-05-21 12:19:43
423
原创 Array-Deque-Queue等的区别
Deque 是一个具有队列和栈性质的双端队列。ArrayDeque 是 Deque 接口的实现,底层使用数组实现的双端队列。Queue 是一种先进先出的队列接口,定义了队列的基本操作。HashMap 是一个哈希表实现的键值对存储容器。new HashMap() 和 new Stack() 是创建空对象的语法。Stack 是一个栈数据结构,遵循后进先出原则。ArrayList 是一个动态数组实现的列表容器。
2023-05-19 09:20:08
632
原创 引入外部文件实现步骤
1.引入数据库相关依赖2.创建外部属性文件,properties格式,定义数据信息:用户名 密码 地址等3.创建spring配置文件,引入context命名空间,引入属性文件,使用表达式完成注入。
2023-05-18 17:59:09
508
原创 依赖注入——特殊类型注入之为对象属性赋值
就是将本身定义在外部的对象属性bean直接定义在要注入的对象里面。外部bean就是将定义在外面的bean通过ref引入。
2023-05-17 22:33:02
79
原创 spring——依赖注入原理及注入方式
总结来说,依赖注入的原理是通过将对象的依赖关系由外部容器来管理和注入,从而解耦组件之间的依赖关系,提高代码的灵活性、可维护性和可测试性。是通过在对象的构造函数、属性或方法中注入所依赖的对象,而不是在对象内部创建或获取依赖对象。这样,对象的依赖关系由外部容器来管理,对象只需要关注自身的核心功能,而不需要关心如何获取依赖对象。(6)使用目标对象:完成依赖注入后,可以通过目标对象的其他方法或属性来使用注入的依赖对象。🟠(1)定义对象的依赖属性:在目标对象中定义一个或多个私有属性,用于存储依赖对象的引用。
2023-05-17 10:50:09
3924
原创 leecode106——使用中序遍历和后序遍历构造一棵二叉树
1.首先,在后续遍历中找到最后一个元素为根节点2.根据后续遍历找到中序遍历的根节点位置3.根据根节点的位置将中序遍历序列分为左子树和右子树4.根据根节点的位置确定左子树和右子树在中序遍历和后序遍历的位置5.递归构造左子树和右子树6.返回根节点结束。需要定义以下变量对树进行还原。1.使用HashMap保存中序遍历的元素和索之间的位置关系。因为在后序遍历找到根节点之后,需要在中序遍历中根据根节点将树划分为左子树和右子树。2.ri为根节点在中序遍历中的位置。
2023-05-17 09:57:03
326
原创 leecode112——路径总和
不要去累加然后判断是否等于目标和,那么代码比较麻烦,可以用递减,让计数器count初始为目标和,然后每次减去遍历路径节点上的数值。如果要搜索其中一条符合条件的路径,那么递归一定需要返回值,因为遇到符合条件的路径了就要及时返回。需要二叉树的根节点和sum返回值,所以需要两个参数,返回值类型为booleaan类型。再来看返回值,递归函数什么时候需要返回值?递归函数是有返回值的,如果递归函数返回true,说明找到了合适的路径,应该立刻返回。如果需要搜索整棵二叉树且需要处理递归返回值,递归函数就需要返回值。
2023-05-16 12:01:47
320
原创 leecode——513找树左下角的值
本题比较适合迭代法理解,层序遍历分割线while(!i < size;i ++) {= null) {= null) {} }LinkedList 和 ArrayDeque 都实现了 Queue 接口,它们之间的主要区别在于底层数据结构不同。LinkedList 使用双向链表来实现队列,这意味着它支持快速地在队列的两端添加或删除元素,但在随机访问和插入元素时相对较慢。如果应用场景需要在队列的两端频繁地添加或删除元素,则使用 LinkedList 会更好。
2023-05-15 13:39:44
341
原创 leecode404——左叶子之和
首先要注意,是左叶子之和,而不是左侧节点之和。那么明确说,左叶子就是节点A的左孩子不为空,且左孩子的左节点为空 并且左孩子的右节点为空,那么A的左孩子为左叶子节点。
2023-05-15 10:12:21
314
原创 leecode255——二叉树的所有路径代码及示例
/ 存最终的结果// 作为结果中的路径“->”// 前序遍历,中// 遇到叶子结点// 输出// StringBuilder用来拼接字符串,速度更快i++) {// 记录最后一个节点// 收集一个路径return;
2023-05-13 16:08:52
502
原创 leecode111——二叉树最短路径
参数为传入根节点,再根据此遍历左右左右树的节点。返回最短路径,即int类型。当 root 节点左右孩子有一个为空时,返回不为空的孩子节点的深度。当 root 节点左右孩子都不为空时,返回左右孩子较小深度的节点值。当 root 节点左右孩子都为空时,返回 1。当root节点为空时,返回0。
2023-05-10 10:10:00
1010
原创 leecode104——二叉树的最大深度
return 0;// }我最开始的时候,想着在else中定义一个count=0,每次遍历左右子树不为空则加1,后来发现,那每次进入这个count都等0,再怎么加都只可能是1。在最开始没有判断根节点是否为空,当根节点为空时应该返回0,但这段代码没有处理这种情况。count的初始值应该为1,因为根节点的深度为1,而不是0。
2023-05-10 09:05:00
560
原创 Leecode101 ——对称二叉树
leecode 101 对称二叉树因为要比较的是根节点的左右子树是否相互翻转的,进而判断是否对称二叉树,所以要比较两个树,参数即左子树节点和右子树节点,返回值也就是boolean类型。代码如下:
2023-05-09 10:33:27
727
原创 二叉树的层序遍历思想模板
ArrayList底层是基于数组实现的,它支持快速随机访问元素,因此对于大量的访问操作,ArrayList的性能优于LinkedList。但是,在插入和删除元素时,由于需要移动数组中的元素位置,所以ArrayList的性能比LinkedList差。LinkedList底层是基于双向链表实现的,它支持高效的元素插入和删除操作,因为只需要改变相邻元素之间的指针。但是,随机访问的性能较差,因为需要遍历链表才能访问指定位置的元素。
2023-05-08 20:58:34
503
原创 计算并返回 x 的 算术平方根
很容易知道,题目要我们返回的整数是有范围的,直觉上一个整数的平方根肯定不会超过它自己的一半,但是 0 和 1 除外,因此我们可以在 1 到输入整数除以 2 这个范围里查找我们要找的平方根整数。如果这个整数的平方 严格小于 输入整数,那么这个整数 可能 是我们要找的那个数(重点理解这句话)。从题目的要求和示例我们可以看出,这其实是一个查找整数的问题,并且这个整数是有范围的。如果这个整数的平方 严格大于 输入整数,那么这个整数肯定不是我们要找的那个数;猜的数平方以后小了,可能猜的数就是,也可能不是。
2022-09-17 10:15:46
1230
原创 leetcode-最后一个 单词的长度java与python
给一个字符串 s,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中 最后一个 单词的长度。(4)第二种情况,以字符串"Hello World “为例,需要先将末尾的空格过滤掉,再进行第一种情况的操作,即认为最后一个单词为"World”,长度为5。(3)第一种情况,以字符串"Hello World"为例,从后向前遍历直到遍历到头或者遇到空格为止,即为最后一个单词"World"的长度5。(5)所以完整过程为先从后过滤掉空格找到单词尾部,再从尾部向前遍历,找到单词头部,最后两者相减,即为单词的长度。
2022-09-12 11:10:04
1020
原创 leecode简单题19_罗马数字转为整数(python)
通常情况下,罗马数字中小的数字在大的数字的右边。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4。例如, 罗马数字 2 写做 II ,即为两个并列的 1。(4)定义一个变量i,遍历得到这个s的长度,输出str[ i ]即可得到字符串s的下标值i对应的字符,说明前面的读取都是没问题的。I 可以放在 V (5) 和 X (10) 的左边,来表示 4 和 9。罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。(2)既然是求和,首先需定义一个变量去接收最后的和;
2022-09-05 10:48:36
103
原创 基础知识-super与继承方法详解
3)子类不能继承父类的构造方法,但是在子类的构造方法第一行隐 式的存在一个super(),用来调用父类的构造方法;(1)子类只能继承一个父类(单继承),可以多层继承,例如C继承自B,B继承自A,那么C同样可以调用A类的属性或者方法;(6)父类中必须有无参构造方法,才能被继承,只有有参构造方法无法被继承。(1)super调用父类的构造方法,必须在构造方法的第一个。(2) super.方法——调用父类的方法。(1) super.属性——调用父类的属性。(3)super()——调用父类的构造方法。...
2022-08-14 16:49:40
1166
原创 韩顺平-零钱通项目
case "4":while (true){//要求用户必须输入y或者n,否则就一直循环System.out.println("你确定要退出?y/n");break;}}}break;default:System.out.println("输入有误,请重新选择");}
2022-08-09 17:02:18
670
原创 韩顺平-方法重写
3.子类方法不能缩小父类方法的访问权限 (public>protected>默认>private)比如 父类 返回类型是 Object , 子类方法返回类型是 String。1.子类的方法的形参列表,方法名称,要和父类的形参列表,方法名称完全一样。2.子类方法的返回类型和父类方法返回类型一样, 或者是父类返回类型的子类。4.方法的重写和重载比较。...
2022-08-06 15:37:51
111
原创 韩顺平-封装
2.提供一个公共publicdeset方法,用于对属性判断并赋值。3.提供一个公共publicdeget方法,用于获取属性的值。1.属性进行私有化private。
2022-08-01 21:55:04
86
原创 韩顺平-汉诺塔问题
有A、B、C三根柱子,A为起始柱,B为辅助柱,C为目标柱,以及若干圆盘,圆盘按上小下大的顺序堆放在A柱上,从上到下依次为每一个圆盘标号为1到n,输入圆盘数,要求将A柱的圆盘移动到C柱,一次只能移动一个,过程中可以任意使用三根柱子,但是要保证小圆盘始终在上输出每一个圆盘每一步移动的过程,比如1号圆盘从A->C。将A座上2个盘子移到B座上(借助C)将B座上2个盘子移到C座上(借助A)将A座上1个盘子移到C座上。......
2022-07-22 17:47:51
231
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人