- 博客(46)
- 收藏
- 关注
原创 我只是在javaweb里面多打了一个空格,就报错“Failed to configure a DataSource: ‘url‘ attribute is not speci”
关于SpringBoot报错:Failed to configure a DataSource: 'url' attribute is not specified and no embedded_springboot多数据源报错failed to configure a datasource: -优快云博客
2024-07-28 21:25:12
349
原创 ●day51 第九章 动态规划part12 ●115.不同的子序列 ●583. 两个字符串的删除操作 ●72. 编辑距离
word1的增和删的操作次数与word2的删除和增加的操作次数是分别对应的,是相等的。
2024-07-16 11:02:37
270
原创 ●day49 第九章 动态规划part10●300.最长递增子序列 ●718. 最长重复子数组
一定要注意dp数组的定义,是以其结尾。一定要把所有元素的初值设置为1。
2024-07-05 17:00:30
361
原创 ●day46 任务以及具体安排:第九章 动态规划part08||121. 买卖股票的最佳时机
dp【i】【1】 = max(dp【i-1】【1】, dp【i-1】【0】+prices【i】) 前面说过,不持有股票有三种情况,但是第一种情况(一直没买过股票)和第三种情况(第i天之前已经进行过一次买卖股票的操作)都可以用dp【i-1】【1】表示,第二种情况就是第i天之前买过,我们在第i天卖掉,所以就是dp【i-1】【0】+prices【i】dp【i】【0】 = max(dp【i-1】【0】,-prices【i】) 前面说过,持有股票有两种情况,如果是之前就有股票,那么就是dp【i-1】【0】,
2024-07-03 21:22:35
474
原创 ●day45 任务以及具体安排:第九章 动态规划part07\\198.打家劫舍\\337.打家劫舍 III
确实不算很难,唯一要注意的就是dp【1】的初始化。
2024-07-03 10:39:04
158
原创 java引用数据类型说明的摘抄
每个方法执行时都会创建一个方法栈,方法内的变量都会放入栈内存中,方法执行结束,栈销毁,但是因为引用数据类型创建的成本通常比较大,所以才会将引用数据类型存放在堆中,因为堆中的对象不会随方法栈的销毁而回收,所以对象放在堆中,可以反复利用。引用数据类型在栈中保存的是一个地址引用,这个地址指向的是其在堆内存中的实际位置。(栈中保存的是一个地址,而实际的内容是在堆中,通过地址去找它实际存放的位置)引用数据类型在创建时,系统会分配两块空间,一块存放引用地址,一块存放实际的对象。基本数据类型是直接保存在栈中的。
2024-07-02 08:25:27
219
原创 day44第九章 动态规划 part06|| ●322. 零钱兑换 ● 279.完全平方数 ●139.单词拆分
我现在越来越觉得是不是得好好用手去走一遍流程了。。。。。
2024-06-26 10:04:37
283
原创 第九章 动态规划 part05|| ●完全背包 ● 518. 零钱兑换 II ●377. 组合总和 Ⅳ ●70. 爬楼梯 (进阶)
这道题考的是组合,而不是排列,关于这一点在b站的评论说的很清晰:关于组合和排列的问题还是有些不解。以下仅为自己的理解:先遍历物品后遍历背包是这样,比如,外层循环固定coins【1】,在内层循环遍历背包时,随着背包不断增加,coins【1】可以重复被添加进来,而由于外层循环固定了,因此coins【2】只能在下一次外层循环添加进不同大小的背包中,这么看的话,coins【i+1】只能在coins【i】之后了;
2024-06-24 22:15:20
447
原创 day42||第九章 动态规划part04||1049. 最后一块石头的重量 II494. 目标和||474.一和零
这个方程的意思是,如果我们要用若干个元素组成和为j的方案数,那么有两种选择:不选第i个元素或者选第i个元素。这个方程的意思是,如果我们要用前i个元素组成和为j的方案数,那么有两种选择:第i个元素取正号或者取负号。所以两种选择的方案数相加就是dp【i】【j】。dp数组的边界,一定要想好,在这道题当中,你是希望dp数组中有target的位置,所以dp的大小一定是target+1。dp数组的边界,一定要想好,在这道题当中,你是希望dp数组中有target的位置,所以dp的大小一定是target+1。
2024-06-24 09:51:05
516
原创 day41||第九章 动态规划part03|| 01背包问题 二维 01背包问题 一维 416. 分割等和子集
好好练习ACM模式!注意dp[i][j]数组的含义,是从[0,i]种类物品中任取(不一定取多少)放进容量为j的背包。所以递推公式:那么可以有两个方向推出来dp[i][j],所以递归公式: dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - weight[i]] + value[i]);但只不过一开始就统一把dp数组统一初始为0,更方便一些。初始化先把所有的值置零,然后再把第一行和第0个物品大小相同的列的元素置为value[0],从这里往后都置为value[0].
2024-06-19 08:15:45
423
原创 day39||第九章 动态规划part02
dp table(dp数组)保持初始值(0)就可以了。还有就是初始化,要注意障碍出现在起始行和起始列的情况。一开始把题想复杂了。还想着把问题分解,先走到障碍附近,然后接着走,我们已经详细分析了没有障碍的情况,有障碍的话,其实就是标记对应的。其实就把dp对应的位置置零就行了。63. 不同路径 II。
2024-06-16 09:45:55
408
原创 day 38 ||第九章 动态规划part01||509. 斐波那契数 70. 爬楼梯 746. 使用最小花费爬楼梯
首先我想的是递归方法,蒙对了,不过你自己对比一下你的递归和卡尔的递归,是不是还可以简化。。。。。
2024-06-15 21:05:11
262
原创 day37||第八章 贪心算法 part05||56. 合并区间
我原本想调用ArrayList里面的set方法,但是发现用get方法也行!之前出现了深拷贝和浅拷贝的问题。现在我们是不是就是可以。引用类型,下面我问的chat。738.单调递增的数字。
2024-06-15 02:03:13
283
原创 day35|| 第八章 贪心算法 part03● 1005.K次取反后最大化的数组和 ● 134. 加油站● 135. 分发糖果
卡尔的思路我明白了,但我感觉我的可能更好理解吧。。。。。。首先我先把数组排序,从小到大走一个循环,如果前几个有负数,那我就消耗k,将前几个取反走完以后,再次排序数组,有可能第一个数是正数,但是它是最小的,所以只操作它一个就行,消耗光k,如果是负的呢,那么它的绝对值是最大的,也是只对他操作,如果最后能取反,赚了,没取反没损失。
2024-06-11 08:36:32
429
原创 day32||第八章 贪心算法 part02● 122.买卖股票的最佳时机II ● 55. 跳跃游戏 ● 45.跳跃游戏II
发现一个评论的思路,也挺不错的:可以把股票的价格波动画出来,单调上升就是盈利,题解就是每一段单调上升的总和,跟讲解的思路类似。就是把连续几天的利润分解,分解成一天一天的利润。
2024-06-10 08:53:46
434
原创 day31||第八章 贪心算法 part01● 理论基础 ● 455.分发饼干 ● 376. 摆动序列 ● 53. 最大子序和
思路没问题,代码仔细想想吧。尽可能把大饼干给大胃口的人,先排序是关键。
2024-06-09 05:17:51
471
原创 day29||回溯算法* 491.递增子序列* 46.全排列* 47.全排列 II
这道题我一开始没写对,但是有一点我需要注意到如果if中的条件正着写很麻烦,那么你就反过来写。举个例子,不针对这道题。你看,上面带注释的就是正着写,我是希望i等于0和大于0而且nums[i]>=nums[i-1]的时候都执行如下函数,那不就是相当于i>0而且nums[i]小于nums[i-1]的时候就continue吗,多思考,会省下来很多步骤。。下面是正确代码我感觉if里面的终止条件写成!
2024-06-05 21:27:39
239
原创 day28||第七章 回溯算法● 93.复原IP地址 ● 78.子集 ● 90.子集II
不是一个一个加,而是字符串一定,变的是截取的下标res集合里面添加的是字符串s,s里面是含“.”的。。
2024-06-04 21:34:27
194
原创 day27||第七章 回溯算法part03● 39. 组合总和● 40.组合总和II● 131.分割回文串
三个问题,第一个是又忘记新建ArrayList赋值到res里面了第二个是忘记组合的含义了,是无序,也就是startindex的确定,这导致我在答案集合中出现了重复。。。。进入到下一个backTracking后,一定不能再从0开始了。而是从当前元素开始,因为可以重复引用。最后一个是忘记把sum减去当前的值了。导致结果错误。下面加了剪枝,要在for里面做文章,不过要先对数组排序。
2024-06-03 21:59:43
270
原创 idea出现Driver class ‘com.mysql.cj.jdbc.Driver‘ not found.
这jar包所在的目录绝对不能出现中文,要不然一定会报错,我把它放在全英文目录下问题解决。别人说的方法在我这里屁用没有,我自己试出来了。
2024-06-03 00:07:05
625
原创 day25||回溯算法part02 ● 216.组合总和III● 17.电话号码的字母组合
我在确定输入参数的时候没有确定好,没有想到还需要sum。对于终止条件,没有想到当sum==target的时候,才push进res对于剪枝,没有想到if(sum>targetsum) return;
2024-06-01 11:53:18
314
原创 day24||回溯算法part01 ● 理论基础 ● 77. 组合●剪枝操作
使用副本的原因是在递归和回溯过程中,path列表是动态变化的。如果不使用副本,而直接添加引用,那么结果列表中的内容会被后续的修改影响,导致所有结果都相同。因此,为了确保每个组合的独立性和正确性,需要将path的副本添加到结果列表中。return res;//一定要复制,要不然就是引用,会空return;i
2024-06-01 00:16:49
363
原创 day23||第六章 二叉树part09● 669. 修剪二叉搜索树 ● 108.将有序数组转换为二叉搜索树 ● 538.把二叉搜索树转换为累加树 ● 总结篇
没做。。。。。。
2024-05-31 12:39:22
244
原创 day22||第六章 二叉树part08: ● 235. 二叉搜索树的最近公共祖先 ● 701.二叉搜索树中的插入操作 ● 450.删除二叉搜索树中的节点
第一个方法就是用d21类似题目的方法,有通用性,第二个方法就是利用了二叉搜索树的特性。
2024-05-29 19:34:43
153
原创 day21||第六章 二叉树part07● 530.二叉搜索树的最小绝对差 ● 501.二叉搜索树中的众数 ● 236. 二叉树的最近公共祖先
先按照直白方式写:将二叉搜索树中序遍历转换为有序数组,然后求最小的相邻元素的差值。双指针法对于递归来说,哪个遍历,中序遍历举例,那么递归函数出现在左和右,具体操作出现在中。
2024-05-28 21:39:07
342
原创 day 20 || 第六章 二叉树 part06 ● 654.最大二叉树 ● 617.合并二叉树 ● 700.二叉搜索树中的搜索 ● 98.验证二叉搜索树
只要你使用递归,就要首先考虑是先序遍历还是中序遍历还是后序遍历!只要你使用递归,就要首先考虑是先序遍历还是中序遍历还是后序遍历!
2024-05-28 00:20:41
202
原创 day 18 || ● 513.找树左下角的值● 112. 路径总和 113.路径总和ii● 106.从中序与后序遍历序列构造二叉树 105.从前序与中序遍历序列构造二叉树
层序遍历(迭代法)比较容易,递归法没看。
2024-05-26 22:18:00
195
原创 day 17 ||第六章 二叉树part04 ● 110.平衡二叉树 ● 257. 二叉树的所有路径 ● 404.左叶子之和
有时间可以看看左的视频判断高度,使用后续遍历。先左再右最后是中。getHeight那一部分,忘了判断最大高度是否大于1了。
2024-05-26 16:37:26
279
原创 day 16|● 104.二叉树的最大深度 559.n叉树的最大深度● 111.二叉树的最小深度● 222.完全二叉树的节点个数
必须首先确定遍历方式:求二叉树的高度:因为求高度,就好像一座大楼在你面前,你肯定是从底层往楼顶去数,所以说呢,就是从底下往上走,那么只有后序遍历符合这个要求了,先左,再右,最后在中。求二叉树的深度:你现在求深度,就好像你看一口井有多深,肯定是,从地面慢慢看到最深处,所以说呢,只有前序遍历符合该要求,先中,再左,再右。一开始空结点返回值我写成1了。错了,现在直到应该是0了,还有left和right,每调用一次,就要+1,刚做这道题的时候我确实有点懵。
2024-05-24 08:32:50
410
1
原创 day 15|● 层序遍历 10 ● 226.翻转二叉树 ● 101.对称二叉树
看完卡尔的视频理解了,但是在实际做的时候遇到了浅拷贝与深拷贝的问题,就是在我标注问号的地方,你虽然先把list赋值给res了,然后才把list清空,但是,实际上刚刚赋值给res的元素也被清空了,也就是说,list赋值给res是个引用的操作。所以就有了浅拷贝和深拷贝的问题,正确做法是,每到一个循环,就重新申请一个List,上面是问题代码,下面是有效代码。
2024-05-22 23:21:04
278
1
原创 day 14|第六章 二叉树part01● 理论基础● 递归遍历 ● 迭代遍历● 统一迭代
先序遍历,中序遍历,后序遍历,忘了思路是啥了,然后看了资料想起来了。三个遍历主要区别在于res.add的位置,如果迭代的代码看不懂,你就看一下左程云主要就是画图帮助你理解。先序遍历:总的来说就是,只要进去一个新结点,就打印中序遍历:先进左结点,return回来以后再打印,然后再进右节点后序遍历:先进左节点,return回来,再进右节点,return回来,打印。
2024-05-21 23:47:40
401
1
原创 day 11 |第五章 栈与队列part02 : ● 20. 有效的括号● 1047. 删除字符串中的所有相邻重复项● 150. 逆波兰表达式求值
卡尔讲的我不太能听明白,自己找了一个leetcode的方法。
2024-05-20 00:23:35
343
原创 代码随想录算法训练营第十天|● 理论基础● 232.用栈实现队列● 225. 用队列实现栈
不管你是用栈实现队列,还是队列实现栈。都需要调用java内部的栈或者队列去实现,所以说,java内部的Collection接口类,还是得掌握熟练。栈的基本方法1.push(Object item):将元素item压入栈顶。2.pop():弹出栈顶元素,并将其从栈中删除。3.peek():返回栈顶元素,但不删除它。4.isEmpty():判断栈是否为空,返回布尔值。
2024-05-19 15:52:55
558
1
原创 代码随想录算法训练营第九天|第四章 字符串part02●28. 实现 strStr()●459.重复的子字符串●字符串总结 ●双指针回顾
●28. 实现 strStr()
2024-05-18 09:26:14
354
原创 代码随想录算法训练营第八天|● 344.反转字符串● 541. 反转字符串II● 卡码网:54.替换数字● 151.翻转字符串里的单词● 卡码网:55.右旋转字符串
这道题一开始我还是用的老办法,什么第i个和第n-i个交换啊。但是做完以后发现这也太low了,突然就想到用双指针,并且做出来了,感觉自己确实成长了。继续坚持吧。
2024-05-16 01:55:55
502
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅