摘要: 其实也是动态规划的一种变形,总的来说,是定义一个二维数组dp[i][j],i表示的是天数,j表示的状态,总的表示收益。 最基础的就是有两种状态,dp[i][0]表示未持有股票,dp[i][1]表示持有股票。 用动态规划的思想:dp[i][0],dp[i][1]都是从dp[i-1]推得的。 只买卖一次 阅读全文
posted @ 2024-01-22 11:16 yun-che 阅读(12) 评论(0) 推荐(0)
摘要: 0-1背包就是数组中元素只能取一个,完全背包就是数组中的元素能无限取。 最开始接触的就是纯粹的背包问题,就是怎么装是背包价值最大, 二维数组, if (j < weight[i]) dp[i][j] = dp[i - 1][j]; else dp[i][j] = max(dp[i - 1][j], 阅读全文
posted @ 2024-01-21 12:39 yun-che 阅读(53) 评论(0) 推荐(0)
摘要: 第一次做这题确实没什么思路,看了卡哥的视频也是似懂非懂,现在整理一下。 首先明确变量有哪些,物品种类,单个物品重量,单个物品价值,背包的最大容量容量;这些变量该如何融入递推公式中呢? 先明确题目所求的是什么,在背包容纳范围下的价值最大。 为了求容量空间为N的价值最大,可以推想容量空间为1,为2该怎么 阅读全文
posted @ 2024-01-20 11:30 yun-che 阅读(14) 评论(0) 推荐(0)
摘要: 该题是动态规划入门程度,但最开始做的时候还是无从下手。 我觉得卡哥给的步骤很重要: 确定dp数组(dp table)以及下标的含义 确定递推公式 dp数组如何初始化 确定遍历顺序 举例推导dp数组 首先明确dp数组(dp table)以及下标的含义很重要,最开始做这道题的时候,设了dp但不知道是代表 阅读全文
posted @ 2024-01-19 22:14 yun-che 阅读(17) 评论(0) 推荐(0)
摘要: 还是之前回溯的模板,只不过添加元素是要加一个判断函数。 它的递归层数可以看成是它行数,因此行数达到n时,这就是递归终止条件。 这里我用的时visited数组来表示,某一行某一列不能取。 完整代码: 点击查看代码 class Solution { public: vector<pair<int,int 阅读全文
posted @ 2024-01-19 13:59 yun-che 阅读(14) 评论(0) 推荐(0)
摘要: 这也是用回溯解决,回溯就是多层for循环,但是这一题有点难发现多层for循环体现在哪里。 实际上该问题for循环的层数与字符串的间隔有关 for循环的层数代表,分割线的个数;for循环的遍历代表这分割线的位置。 这里引用卡哥的图: 因为分割线不能取前一个的位置,所以要根据之前组合那题的套路,要引用s 阅读全文
posted @ 2024-01-18 16:39 yun-che 阅读(16) 评论(0) 推荐(0)
摘要: 这题跟之前组合问题不同之处在于给的数组里面的元素是有重复的。 如果按照之前方法处理的话,就会得到重复的集合。 看了卡哥的方法,知道这个去重是是树层去重,横向的;不是树枝去重,纵向的。 这除了和前一个元素比较,还要加一个visit数组。如果前一个元素的visit是false就符合条件。 这个要记得在弹 阅读全文
posted @ 2024-01-18 15:19 yun-che 阅读(10) 评论(0) 推荐(0)
摘要: 首先要明确一点回溯也是纯暴力的一种方法,就是多层for循环。但是有的题目你不能写出它具体有多少层for循环,因此用递归来表示内侧for循环的逻辑。 比如说这道题,它for循环的数目是随着K变化的,K等于2是就两层for循环。 卡哥给出回溯算法框架 点击查看代码 void backtracking(参 阅读全文
posted @ 2024-01-18 11:13 yun-che 阅读(19) 评论(0) 推荐(0)
摘要: 删除目标节点首先要找到该节点,因此用到搜索二叉树的性质去寻找,该节点比target大就看左子树部分,小就看右子树部分。 根据主函数可知,最后是返回一个节点,也可以看成是返回一个子树。因此查找的时候就要承接这子树,这子树就是删除好后的结果。 点击查看代码 if(!root){return NULL;} 阅读全文
posted @ 2024-01-17 17:44 yun-che 阅读(35) 评论(0) 推荐(0)
摘要: 最开始做的时候,就先想到的是找父节点的那个函数,于是先把目标节点的所以祖先节点存起来,然后一个一个进行比对,当然这样耗时很大。 点击查看代码 class Solution { public: vector<TreeNode*>vp,vq; TreeNode*findfa(TreeNode*root, 阅读全文
posted @ 2024-01-17 12:21 yun-che 阅读(15) 评论(0) 推荐(0)