会员
周边
新闻
博问
闪存
众包
赞助商
Chat2DB
所有博客
当前博客
我的博客
我的园子
账号设置
会员中心
简洁模式
...
退出登录
注册
登录
yun-che
博客园
首页
新随笔
联系
订阅
管理
上一页
1
2
3
4
下一页
2024年1月22日
股票买卖问题总结
摘要: 其实也是动态规划的一种变形,总的来说,是定义一个二维数组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)
2024年1月21日
0-1背包和完全背包,初级理解和总结
摘要: 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)
2024年1月20日
0-1背包问题 初理解
摘要: 第一次做这题确实没什么思路,看了卡哥的视频也是似懂非懂,现在整理一下。 首先明确变量有哪些,物品种类,单个物品重量,单个物品价值,背包的最大容量容量;这些变量该如何融入递推公式中呢? 先明确题目所求的是什么,在背包容纳范围下的价值最大。 为了求容量空间为N的价值最大,可以推想容量空间为1,为2该怎么
阅读全文
posted @ 2024-01-20 11:30 yun-che
阅读(14)
评论(0)
推荐(0)
2024年1月19日
使用最小花费爬楼梯 动态规划初理解
摘要: 该题是动态规划入门程度,但最开始做的时候还是无从下手。 我觉得卡哥给的步骤很重要: 确定dp数组(dp table)以及下标的含义 确定递推公式 dp数组如何初始化 确定遍历顺序 举例推导dp数组 首先明确dp数组(dp table)以及下标的含义很重要,最开始做这道题的时候,设了dp但不知道是代表
阅读全文
posted @ 2024-01-19 22:14 yun-che
阅读(17)
评论(0)
推荐(0)
N皇后与数独,回溯的较难应用
摘要: 还是之前回溯的模板,只不过添加元素是要加一个判断函数。 它的递归层数可以看成是它行数,因此行数达到n时,这就是递归终止条件。 这里我用的时visited数组来表示,某一行某一列不能取。 完整代码: 点击查看代码 class Solution { public: vector<pair<int,int
阅读全文
posted @ 2024-01-19 13:59 yun-che
阅读(14)
评论(0)
推荐(0)
2024年1月18日
分割回文串 131
摘要: 这也是用回溯解决,回溯就是多层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)
2024年1月17日
搜索二叉树删除节点和修减二叉树
摘要: 删除目标节点首先要找到该节点,因此用到搜索二叉树的性质去寻找,该节点比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)
上一页
1
2
3
4
下一页
公告