装满背包的递推公式
dp[j] += dp[j - nums[i]];
dp[j]的含义是指在背包容量为j的情况下,背包能装的最大重量
nums[i]就是第i个物品的重量
动态规划就是当前值依赖于前一个值,实现全局最优
备忘:
如果求组合数,外层遍历物品
如果求排列数,外层遍历背包
如果遍历整颗树,递归函数就不能有返回值
遍历某一条固定路线,递归函数就一定要有返回值
二叉树节点的深度:指从根节点到该节点的最长简单路径边的条数
二叉树节点的高度:指从该节点到叶子节点的最长简单路径边的条数
6.24算法题
完全背包问题
完全背包和01背包问题唯一不同的地方就是,每种物品有无限件。
6.25
奇安算法题
6.26
牛客网--重构二叉树思路
6.28
c++三数之和
算法题小知识
如何对容器的值排序
sort(nums.begin(),nums.end());
使用set
unordered_set<int> set//定义set
set.find()//查找元素,返回bool值
set.insert()//插入元素
set.end()//set表的最后一个元素,一般使用方法是用来判断查找的数是不是和set.end()相等,若相等则set表中没有这个数
动态规划模板
vector<int> dp(n+1,0)
dp[i][j]=max(dp[i-1][j],dp[i][j-weight[i]+value[i]);
将vector的成员类型是string 加入到集合中
vector<string>& wordDict
unordered_set<string> wordSet(wordDict.begin(), wordDict.end());
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。