- 博客(55)
- 收藏
- 关注
原创 代码随想录算法训练营第55天|动态规划part15
1、dp[i][j]:以i-1为结尾的s子序列中出现以j-1为结尾的t的个数为dp[i][j]。题目:两个字符串s和t,问t是不是s的子序列(不必连续)115.不同的子序列。115.不同的子序列。题目:t在s里出现多少次。
2023-08-21 15:07:01
540
原创 代码随想录算法训练营第53天|动态规划part14
1、dp[i][j]:长度为[0, i - 1]的字符串text1与长度为[0, j - 1]的字符串text2的最长公共子序列为dp[i][j]题目:两个字符串,问最长的公共子序列多长(不连续)本题和 1143.最长公共子序列 是一模一样的。题目:在一个整数数组里找和最大的子序列(连续)1、dp[i]表示以i结尾的子序列的和。53. 最大子序和 动态规划。1143.最长公共子序列。1035.不相交的线。1143.最长公共子序列。1035.不相交的线。
2023-08-19 22:09:47
670
原创 仿牛客论坛项目day7|Kafka
comment controller:生成event,调用生产者的fire event方法。follow controller:生成event,调用生产者的fire event方法。like controller:生成event,调用生产者的fire event方法。消费者:将event转换为message对象,再将message存入数据库。
2023-08-18 21:09:52
909
原创 代码随想录算法训练营第52天|动态规划part13
1、dp[i][j] :以下标i - 1为结尾的A,和以下标j - 1为结尾的B,最长重复子数组长度为dp[i][j]。2、当A[i - 1] 和B[j - 1]相等的时候,dp[i][j] = dp[i - 1][j - 1] + 1;1、dp[i]表示以i为结尾的最长子序列的长度。2、dp[j]表示i之前的最长子序列长度。题目:求数组的不必连续的最长递增子序列。题目:两个数组的最长公共子序列(连续)674. 最长连续递增序列。674. 最长连续递增序列。1、要求连续则需要与i-1比较。
2023-08-18 15:41:31
556
原创 仿牛客论坛项目day6|redis
1、NoSQL数据库。支持多种类型的数据结构,如字符串(String),哈希(Hashes),列表(Lists),集合(Sets),有序集合(Sorted sets)等。2、数据存在内存里,所以读写性能很惊人。同时将内存中的数据以快照或日志的形式保存在硬盘上,以保证数据安全性。3、典型应用场景:缓存、排行榜、计数器、社交网络、消息队列等。
2023-08-18 00:17:50
469
原创 代码随想录算法训练营第51天|动态规划part12
那么dp[i][0] = max(dp[i - 1][0], dp[i - 1][3] - prices[i], dp[i - 1][1] - prices[i]);714.买卖股票的最佳时机含手续费。714.买卖股票的最佳时机含手续费。309.最佳买卖股票时机含冷冻期。309.最佳买卖股票时机含冷冻期。题目:每次交易之后要等一天(冷冻期)在之前的基础上,每次卖出减去手续费。
2023-08-17 17:58:53
189
原创 代码随想录算法训练营第50天|动态规划part11
dp[i][0]没有操作 (其实我们也可以不设置这个状态)123.买卖股票的最佳时机III。123.买卖股票的最佳时机III。dp[i][j][1]第j次不持有股票。188.买卖股票的最佳时机IV。dp[i][j][0]第j次持有股票。188.买卖股票的最佳时机IV。dp[i][2]第一次不持有股票。dp[i][4]第二次不持有股票。dp[i][1]第一次持有股票。dp[i][3]第二次持有股票。题目:2次买卖变为最多k次买卖。
2023-08-16 16:30:18
218
原创 代码随想录算法训练营第49天|动态规划part10
第i-1天是不持有的状态并且第i天也是不持有状态,或者第i-1天是持有的状态但是第i天是不持有状态。第i-1天是持有的状态并且第i天也是持有状态,或者第i天是持有状态(只能买买一次)。1、dp[i][0]表示第i天是持有的状态,dp[i][1]表示第i天是不持有的状态。122.买卖股票的最佳时机II。
2023-08-15 17:04:48
251
原创 仿牛客论坛项目day3|开发社区首页
在典型的基于层次结构的软件架构中,特别是在使用MVC(模型-视图-控制器)设计模式的情况下,ControllerServiceDAO(数据访问对象)和Entity通常扮演着不同的角色,并且它们之间有清晰定义的关系。
2023-08-14 19:19:45
119
原创 代码随想录算法训练营第48天|动态规划part09
意思是打劫第i家:dp[i-2]+nums[i];不打劫第i家:dp[i-1]如果大小为1,返还nums[0]2、当数组大小为2时,返回max(nums[0],nums[1])题目:房子成二叉树了,相邻节点(一根线连起来的节点)不能同时偷。1、分为两种情况:只考虑首,不考虑尾;1、dp[i]表示考虑进第i个房子,最多能得到的金额。337.打家劫舍III。213.打家劫舍II。213.打家劫舍II。337.打家劫舍III。
2023-08-14 19:16:46
101
原创 仿牛客论坛项目day2|MyBatis入门
MyBatis使用映射文件来将数据库表的列映射到Java对象的属性。你可以创建XML映射文件,或者使用注解来定义这些映射。首先,你需要在你的项目中添加MyBatis的依赖。如果你使用Maven,可以在。在你的服务或控制器中,你可以注入Mapper接口,并使用它来执行数据库操作。,并在/resources/mapper里创建一个与数据库表对应的映射文件。在dao文件夹里创建一个与XML映射文件对应的Mapper接口(文件中配置MyBatis的相关属性,如数据库连接信息等。xml里写sql语句。
2023-08-12 17:50:48
192
原创 代码随想录算法训练营第46天|动态规划part08
3、如果dp[i-dict[j].length]为true并且s.substring(i-dict[j].length,i)这个字符串在字典里能找到,那么dp[i]也为true。1、声明并初始化一个bool数组:boolean[] dp = new boolean[size]3、取子串:s.substring(startindex,endindex)题目:一个字典,一个字符串,问字符串能否由字典组成。1、dp[i]表示长度为i的字符串能否由字典组成。关于多重背包,你该了解这些!关于多重背包,你该了解这些!
2023-08-12 14:26:02
342
原创 代码随想录算法训练营第45天|动态规划part07
3、每次判断dp[j-i*i]的值是不是max_value,是的话说明这个值还没更新过,不能继续下去。5、每次要判断dp[j-coint[i]],因为是从前往后遍历,必须要之前的值有更新才沿着之前的继续。(与物品顺序有关还是无关,都不影响组合内的元素个数)(与物品顺序有关,所以有多个顺序)3、物品和背包这两层for循环可交换位置(因为与物品顺序无关)3、先遍历背包,再遍历物品(与物品顺序有关)5、背包和物品循环位置可交换(最少个数)2、背包从前往后遍历(完全背包)2、物品从前往后(完全背包)
2023-08-11 18:44:28
584
原创 代码随想录算法训练营第44天|动态规划part06
题目:有一个零钱数组coins,一个目标值target,用零钱凑出target,问有多少种组合数。完全背包就是每个物品可以无限次使用,所以便利背包时改为从前往后遍历;只能先遍历物品,再遍历背包,因为求的是组合数,只会有【1,2,3】没有【3,2,1】题目:一个数组,一个target,问有多少种排列方式能凑出target。1、遍历背包时从前往后(物品重复使用)2、先遍历背包,再遍历物品(求排列)518. 零钱兑换 II。377. 组合总和 Ⅳ。377. 组合总和 Ⅳ。,这样物品可以重复。
2023-08-11 18:25:37
223
原创 代码随想录算法训练营第四十三天|动态规划part05
2、dp[i][j] = max(dp[i][j], dp[i-zero][j-one]+1)含义是:如果子集包括数组里的第i个字符串,那么此时子集的长度为dp[i-zero][j-one]+1。大家重点理解 递推公式:dp[j] += dp[j - nums[i]],这个公式后面的提问 我们还会用到。1、将石头分为重量最接近的两堆,将两堆的石头两两相撞,剩下的重量就最小。1、dp[i][j]表示有i个0,j个1的子集的最大长度。dp[j]指的是装满容量为j的背包有多少种方法。
2023-08-09 18:16:32
185
原创 代码随想录算法训练营第四十二天|动态规划part04
要么放物品i,此时背包剩余容量是j-weight[i],再从[0,i-1]这些物品里随便取放入容量为j-weight[i]的背包里。2、递推公式:dp[i][j] = max(dp[i-1][j], dp[i-1][j-weight[i]]+value[i])。2、递推公式:dp[j] = max(dp[j], dp[j-weight[i]]+value[i])1、dp[i][j]表示从下标为[0,i]的物品里随便取,放入容量为j的背包,能装下的最大价值。1、dp[j]表示容量为j的背包能放入的最大价值。
2023-08-08 15:23:16
160
原创 代码随想录算法训练营第四十一天|动态规划part03
1、dp[i]表示有i个节点时二叉搜索树的数量。题目:节点是从1到n,问有多少种二叉搜索树。题目:将数n拆分为多个数,求其乘积最大值。1、dp[i]将i拆分后的最大乘积。96.不同的二叉搜索树。96.不同的二叉搜索树。
2023-08-07 15:10:08
240
原创 代码随想录算法训练营第三十九天|动态规划part02+复习数组part01
2、因为只能向下或向右移动,所以dp[i][j] = dp[i - 1][j] + dp[i][j - 1]从start(0,0)走到end(m-1,n-1),问有多少路径。3、初始化:dp数组的第0排和第0列都应该为1,因为只有一种方式。1、初始化:遇到障碍物,该格子与其右边(或下边)的dp数组应为0。1、dp[i][j]表示到(i,j)的位置有多少条路径。题目:和上道题不同点在于有的格子有障碍。2、遍历时需先判断该格子是否有障碍物。63. 不同路径 II。63. 不同路径 II。
2023-08-07 14:02:26
868
原创 代码随想录算法训练营第三十八天|动态规划part01
2、到第i个台阶,可以选择从i-1向上爬一阶,也可以选择从i-2向上爬两阶,选择两种方法中cost小的那个。1、从3阶楼梯开始,dp[i] = dp[i-1] + dp[i-2]3、dp[0]=dp[1] =0 因为仅仅站在台阶而不往上爬时没有花费。在i个台阶往上爬需要花费cost[i],问到屋顶的最小花费。题目:一次可以爬1或2个台阶,问爬n阶楼梯有几种方式。1、dp[i]表示到i个台阶的最小话费。题目:给出斐波那契数列的第n个数的值。746. 使用最小花费爬楼梯。746. 使用最小花费爬楼梯。
2023-08-04 18:36:47
247
原创 代码随想录算法训练营第三十七天|贪心算法part05
2、从后往前遍历字符串,遇到i<i-1的情况(非单调增),将(i-1)--,并将flag赋值为i。可以看看贪心算法的总结,贪心本来就没啥规律,能写出个总结篇真的不容易了。本题是贪心和二叉树的一个结合,比较难,一刷大家就跳过吧。题目:找出小于或等于 N 的最大的单调递增的整数。3、从flag开始,每个数都赋值为9。整型转字符串:to_string()968.监控二叉树 (可以跳过)738.单调递增的数字。738.单调递增的数字。字符串转整型:stoi()1、将数组转成字符串。4、将字符串转为整型。
2023-08-03 15:23:40
197
原创 代码随想录算法训练营第三十六天|贪心算法part05
3、遍历过程中更新right(区间右边界),如果right==i了,就将right- left+1(区间长度)放入result数组中。今天的三道题目,都算是 重叠区间 问题,大家可以好好感受一下。2、如果遇到重叠区间,那么结果集里的最后一个区间的右边界就应该更新。更新为Max(当前右边界,遍历的区间i的右边界)和昨天的气球问题很像,找到重叠区间result++3、如果没有重叠,就将区间i加入结果集。划分区间,使每种字母仅在一个区间出现。题目:遇到重叠的区间就将其合并。移除区间,使区间不重叠。
2023-08-02 15:54:14
204
原创 代码随想录算法训练营第三十五天|贪心算法part04
3、对第i个元素,如果它的左区间大于上一个元素的右区间,就需要增加弓箭,result++。4、否则就更新第i个元素的右区间,为第i和第i-1个元素的右区间的最小值。分情况讨论,分别讨论bill为5、10、20的情况。2、遍历排序后的数组,将每个元素插入到第k个位置。452. 用最少数量的箭引爆气球。452. 用最少数量的箭引爆气球。1、将气球按左区间从小到大排列。406.根据身高重建队列。406.根据身高重建队列。1、cmp为static。1、按身高从高到低排序。2、遍历排列好后的数组。
2023-08-01 17:44:28
192
原创 代码随想录算法训练营第三十四天|贪心算法part03
2、同样的思路,从后往前遍历数组,对第i个孩子,如果它的分数大于右孩子(左大于右),candy[i] = max(candy[i], candy[i+1] + 1)3、如果k还不为0并且是奇数,将绝对值最小的数转变符号(也就是最小的正数变为负数,因为这时已经遍历了数组,所有数都是非负数了)1、先从前往后遍历数组,对于第i个孩子,如果它的分数大于左孩子(右大于左),candy[i] = candy[i-1] + 1。1、第i站的剩余油量rest[i] = 可加油量gas[i] - 消耗油量cost[i]
2023-07-31 14:14:04
201
原创 代码随想录算法训练营第三十二天|贪心算法part02
4、除此之外,每次跳一步之后(result++),还要判断next是否到了数组最后一个点,如果到了就要跳出循环。3、然后就往后遍历,当超出当前范围的时候,就跳一步,result++,并将next的值赋给cur。关注覆盖范围,i+nums[i]。2、第0步的时候,cur为0,next是i+nums[i]=0+nums[0]。cur是当前步的最大覆盖范围,next是下一步的最大覆盖范围。和上一题不同,本题说了可以跳到最后。1、result初始化为0,也就是从第0步开始。如果i日股票差价为正数,就加入结果。
2023-07-29 16:21:50
189
原创 代码随想录算法训练营第三十一天|贪心算法part01
小孩胃口和饼干尺寸都排序。先用最大蛋糕喂胃口最大小孩,直到找到该蛋糕能喂的胃口最大的小孩。然后再用次大的蛋糕喂剩下的胃口最大的小孩。了,就将当前序列后面的那个元素作为新的序列起始点。result记录最大和,如果。
2023-07-28 13:15:10
249
原创 代码随想录算法训练营第三十天|回溯算法part06
两个for循环遍历每个格子,如果遇到空格,循环插入属于1-9区间的字符k,用invalid判断是否符合要求。如果符合要求就插入,并递归插入后的棋盘。每一行递归,每行的每个数遍历。invalid函数判断某个格子是否符合要求。332.重新安排行程(可跳过)map这里不理解,太难了。51. N皇后(可跳过)37. 解数独(可跳过)332.重新安排行程。
2023-07-27 17:51:21
168
原创 代码随想录算法训练营第二十九天|回溯算法part05
这里与组合二一样,集合里可能有重复元素。所以在全排列的基础上需要增加去重操作。一种是排序后使用used数组,一种是不用排序使用set(递增子序列)3、排列避免重复的方法是used数组,遇到使用过的元素就continue。和之前做过的子集一样,在每个节点而不是叶子节点收集结果。因为排列讲顺序,组合不考虑顺序,所以排列可以是相同的元素,不同的顺序。2、全排列和全组合都是在叶子节点收获结果。:不能用used数组,而是使用set。1、不使用start index。* 491.递增子序列。* 47.全排列 II。
2023-07-26 13:39:32
201
原创 代码随想录算法训练营第二十八天|回溯算法part04
和分割回文串很像,每次遍历前要检查是否符合IP地址规则。不同在于设置了一个pointnum作为结束条件。大家之前做了 40.组合总和II 和 78.子集 ,本题就是这两道题目的结合。不同点:收集的是每个节点而不仅是叶子结点。所以在每次递归收集结果。就是每次递归收集+使用used数组防止结果重复。
2023-07-25 16:56:09
237
原创 代码随想录算法训练营第二十五天|回溯算法part03
不同点在于每遍历到一个字母需要判断【start index, i】这个字符串是否为回文字符串,是回文字符串才将它加入path,否则继续往后遍历。如果遍历过程中遇到前后两个数相同,且used[i-1]为false(前面这个数不在组合中),就continue。本题开始涉及到一个问题了:去重。去重分为树层去重和叶子去重,这里应该是树层去重。candidate里面的数可以重复使用,所以backtracking。其实和组合问题差不多,也是遍历数组然后将元素加入path。使用一个used数组,
2023-07-24 15:28:45
253
原创 代码随想录算法训练营第二十五天|回溯算法part02
和前面的组合问题的区别:是多个数组里组合。和昨天组合问题的区别在于多了一个sum。17.电话号码的字母组合。17.电话号码的字母组合。216.组合总和III。216.组合总和III。
2023-07-22 16:01:47
252
原创 代码随想录算法训练营第二十四天|回溯算法part1
按照三部曲走,首先确定参数和返回值,然后确定终止条件,最后写单层递归逻辑。剪枝就是在for循环里,i<=n-(k-path.size())+1。回溯包括在递归中,和递归三部曲格式一致。
2023-07-21 13:55:29
264
原创 代码随想录算法训练营第二十三天|二叉树part09
与删除节点不同的是,如果当前节点的值小于low,应当返还traversal(节点右子树)。找到中间值作为根节点,然后它的左子树是左区间的中间值,右子树是右区间中间值。108.将有序数组转换为二叉搜索树。108.将有序数组转换为二叉搜索树。538.把二叉搜索树转换为累加树。538.把二叉搜索树转换为累加树。669. 修剪二叉搜索树。669. 修剪二叉搜索树。右中左遍历二叉搜索树。
2023-07-20 14:05:22
227
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅