算法打卡
文章平均质量分 74
stao_xs
这个作者很懒,什么都没留下…
展开
-
round1/day25补/子序列
为什么不是i和j为结尾?——判定条件是从i-1开始的,也就是起始于i=0,j=0的情况,而dp[1][1]=dp[0][0]+1。所以要比较最后一位的结果,必须让i=nums1.length,超出nums1数组的长度,才能确保dp[i-1]定位到nums1的最后一个元素。它是以nums[i]为结尾的最长序列,但是并没有讨论如果有比nums[i]更大的数应该取谁,故在每一层的遍历i、得出dp[i]之后,还应该跟一个全局的max值再比较。注意dp数组的定义,是以i-1,j-1为结尾。原创 2023-10-14 10:48:59 · 48 阅读 · 0 评论 -
round1/day24补/动规/股票问题总结
核心是分状态问题分成两种状态和。原创 2023-10-14 10:18:18 · 53 阅读 · 1 评论 -
round1/day23补/动规/股票问题2
分成两种状态和,再拆分两种子情况:注意理解什么叫“持有”而不是“卖出”什么是-prices[i]?——目的是找到最小的-price[i],让买入值最低。因为一开始和他比较的值就是price[0]的买入价,而不是0。原创 2023-10-14 10:18:13 · 57 阅读 · 1 评论 -
round1/day21&22/动规-股票问题
分成两种状态:dp[0]持有,dp[1]不持有还在用贪心。原创 2023-10-10 20:59:36 · 65 阅读 · 1 评论 -
round1/day20/动规-完全背包总结
*原创 2023-10-08 20:45:05 · 42 阅读 · 1 评论 -
round1/day20/动规-打家劫舍问题
【代码】round1/day20/动规-打家劫舍问题。原创 2023-10-08 19:51:33 · 47 阅读 · 1 评论 -
round1/day19/完全背包02
物品:硬币们coins。物品价值/重量coins[i],物品特性无限使用+组合需去重,物品数量dp[j]因为是求min,所以dp的初始值必须最大化,而不能只用dp[0]=0。遍历nums,完全背包情况3:完全背包-完全装满-求物品最小数量。遍历n里的所有数字,挑出完全平方数数组nums。类似322,多了一个提取完全平方数的步骤。:完全装满背包时,物品的最小数量。- 背包容量:amount总金额。注意不去重:顺序不同的序列可以。原创 2023-10-04 12:06:58 · 52 阅读 · 1 评论 -
round1/day18/动规-完全背包1
物品和背包遍历先后的问题(歪打正着)原创 2023-10-03 23:14:23 · 41 阅读 · 0 评论 -
round1/day16&17/动规4 - 01背包总结
缓慢理解用意中(感悟+3)原创 2023-10-01 23:03:15 · 131 阅读 · 0 评论 -
round1/day14&15/动规3-01背包
int[]数组求和:Arrays.stream(nums).sum()转为01背包问题:01背包的应用:注意j遍历的边界,为了步数组越界,需要的是j-stones[i]>=0,即j>=stones[i]原创 2023-09-30 12:36:39 · 88 阅读 · 0 评论 -
round1/day13补/动规2
还是要建立dp数组思维dp数组的当前步和上一步:之间是什么关系?上一步中哪些元素共同组成了当前步的结果?原创 2023-09-29 16:47:20 · 288 阅读 · 1 评论 -
round1/day12/动规1
注意,这个数组在n=1的时候就会因为数组越界报错,所以要设置if支线。注意遍历dp[i]时的终止位置。原创 2023-09-25 23:34:46 · 48 阅读 · 1 评论 -
round1/day11补/贪心4
还是感觉没有定论,甚至不觉得自己贪心。原创 2023-09-24 12:41:24 · 45 阅读 · 1 评论 -
round1/day10/贪心3
tbc。原创 2023-09-23 00:20:49 · 38 阅读 · 1 评论 -
round1/day9补/贪心2
还没有悟,什么情况下可以判断我在做局部的最优解?什么是局部最优?什么是整体最优?证明局部最优可以导向整体最优吗?原创 2023-09-22 21:47:38 · 39 阅读 · 1 评论 -
round1/day8/贪心1
反证法:假设用除了最优解以外的方法来解决问题,然后与和最优解解决相比较,发现其效果劣于最优解,说明最优解成立。原创 2023-09-20 23:21:11 · 55 阅读 · 1 评论 -
打卡round1/day7/回溯算法:总结
4.2 问:每层遍历中,需要递归的是除了nums[i]的部分,还是nums[i]之后的剩余部分?注意:如果需要在递归中执行操作,如sum、增加字符、改变used[i]=true等,记得回退时一并删除。2.3 情况3: 返回的不是套娃数组,而是二维数组(或转换后的字符串),如棋盘问题。每层遍历返回一条path,经过n层遍历后,return path的集合result。3.2 情况2:以遍历到最后一行/遍历满k个元素作为终止,如返回所有k个数的组合。注意:如果有sum等计算,回退时不要忘记。原创 2023-09-18 23:25:16 · 48 阅读 · 0 评论 -
打卡round1/day6/回溯算法4-棋盘
tbc。原创 2023-09-15 22:37:35 · 103 阅读 · 0 评论 -
打卡round1/day4&5【补】/回溯算法3-子集、全排列
tbc。原创 2023-09-14 10:24:38 · 126 阅读 · 1 评论 -
打卡round1/day2&3/回溯算法2-分割
思路重复:首先,然后进行递归,如果不符合条件,就回退到上一个状态,继续尝试其他选择。重点是:要先进入一个正确的选择才能递归,即在里进行递归。原创 2023-09-10 23:41:30 · 130 阅读 · 0 评论 -
打卡round1/day1/回溯算法1-组合
以[1,2,3,4]中取2个数的组合为例,将排列组合结果以树的方式陈列出来,就会发现,需要记录所有长度为k的path,即套娃遍历for循环要进行k次,每次遍历则需要涵盖本层树上的所有节点,即n/n-1/n-2/...个节点。回溯/递归,本质上是把问题抽象成一个树型结构,然后用树的思路来解决。树是一种思考工具,我们说到树,是基于树这种数据排列方式来进行数据的处理,而不是呆板地视作一种固定的数据结构再来解决它。问:怎么确保遍历的时候不重复收集之前已经录入path的节点?3. 本层树递归时的逻辑怎么写?原创 2023-09-09 16:55:06 · 202 阅读 · 1 评论