LeetCode二刷记录【5】动态规划小结
1.爬楼梯
dp[i]为到达第i个阶梯的所有走法数量。
所求为dp[n]
dp数组没有必要一直存在,已知前两个即可。
int climbStairs(int n) {//初始状态加上递推式int num1=1,num2=2;if(n<=2)return n;else{for(int i=2;i<n;++i){int temp=num1+num2;num1=num2;num2=temp;}}return num2;}
2.买卖股票的最佳时机
dp[i]表示第i天卖出时的最大获利
所求为
只需一个dp缓存量即可,外加一个当前最低价格。
int maxProfit(vector<int>& prices) {int min_price=INT_MAX;int max_profit=0;for(auto price:prices){max_profit=max(max_profit,price-min_price);min_price=min(min_price,price);}return max_profit;}
3.最大子序和
dp[i]表示到i位置为最右侧的最大子序和
所求为max(dp[i])
int maxSubArray(vector<int>& nums) {int max_sum=INT_MIN;vector<int> dp(nums.size(),0);int tmp_sum;for(int i=0;i<nums.size();++i){int _max_sum=0;if(i==0){tmp_sum=nums[i];_max_sum=nums[i];}else{_max_sum=nums[i]+(tmp_sum>0?tmp_sum:0);tmp_sum=_max_sum;}if(max_sum<_max_sum)max_sum=_max_sum;}return max_sum;}
4.打家劫舍
dp[i]表示从左往右打劫到第i家时的最大获利
dp[1]=nums[1],dp[2]=max(nums[1],nums[2])
所求为max(dp[n],dp[n-1])
int rob(vector<int>& nums) {if(nums.size()==0)return 0;else if(nums.size()==1)return nums.at(0);//初始化int a=nums[0];int b=max(nums[0],nums[1]);for(int i=2;i<nums.size();i++){int temp=b;b=max(a+nums[i],b);a=temp;}return b;}
LeetCode二刷记录【5】动态规划小结相关推荐
- 【LeetCode笔记】剑指 Offer 65. 不用加减乘除做加法(Java、位运算、二刷)
文章目录 题目描述 思路 & 代码 二刷 题目描述 讲道理,感觉算有点难度的题目了= =,还是需要时不时看看. 思路 & 代码 正负数情况可以不考虑(补码) 核心:加法 = 进位和 + ...
- LeetCode部分习题解答记录-动态规划
LeetCode部分习题解答记录-动态规划 动态规划 120.三角形最小路径和 方法:递归+记忆化 方法2:DP 64.最小路径和 方法1:递归 方法2:DP 从终点到起点,逐步更新 从起点到终点,逐 ...
- day46第九章动态规划(二刷)
今日任务 139.单词拆分 关于多重背包,你该了解这些! 背包问题总结篇! 关于多重背包,力扣上没有相关的题目,所以今天大家的重点就是回顾一波自己做的背包题目吧. 139.单词拆分 题目链接: htt ...
- LeetCode刷题笔记-动态规划-day4
文章目录 LeetCode刷题笔记-动态规划-day4 55. 跳跃游戏 1.题目 2.解题思路 3.代码 45. 跳跃游戏 II 1.题目 2.解题思路 3.代码 LeetCode刷题笔记-动态规划 ...
- 【LeetCode笔记】剑指 Offer 64. 求1 + 2 + ... + n (Java、限制语法、二刷)
文章目录 题目描述 思路 && 代码 注释版代码(方便理解): 无注释版代码(方便背诵= =) 二刷 题目描述 鬼鬼,又到了我最喜欢的戴着脚镣跳舞环节. 讲道理,我觉得这类题应该整个归 ...
- 【LeetCode笔记】剑指 Offer 57- II. 和为 s 的连续正数序列(Java、滑动窗口、二刷)
文章目录 题目描述 思路 & 代码 二刷 题目描述 花了不少时间来优化= =,很好的一道用来理解滑动窗口的题- 思路 & 代码 要点:为了 O(n) 复杂度,左右边界都只能往右走 滑动 ...
- 【LeetCode笔记】剑指 Offer 26-. 树的子结构 (Java、双重dfs、二刷)
文章目录 题目描述 思路 & 代码 二刷 题目描述 思路很值得看的一道题,和之前路径总和 III的双递归思路.结构很像 思路 & 代码 isSubStructrue() 进行一个前序的 ...
- leetcode分类刷题笔记
leetcode分类刷题笔记--基于python3 写在前面 1.做题如果实在想不出时间复杂度比较优的解法,可以先写出暴力解法,尝试在其基础上优化 2.排序.双指针.二分等--经常可以优化时间复杂度 ...
- 【Leetcode】 刷题之路1(python)
leetcode 刷题之路1(python) 看到有大佬总结了一些相关题目,想着先刷一类. 1.两数之和 15.三数之和 16.最接近的三数之和 11.盛最多的水 18.四数之和 454.四数相加II ...
最新文章
- Java 8 (8) 默认方法
- vue项目按需引入element-ui,修改.babelrc文件之后报错
- shell开发跳板机功能脚本
- Java EE 课程作业(Fifth)-- XML:定义 用途 工作原理及未来xml
- 第五章:系统困境之 你的努力忽略了关键限制因素
- 在anaconda下创建我的第一个scrapy爬虫——爬取dmoz网站某一网址下的目录的链接名称以及链接地址...
- 如何使用alt键+数字键盘上的数字键打出特殊符号
- 高效办公,从几行批处理命令开始 | 原力计划
- 关于json返回日期格式化的解决方案
- lucene 分词实现
- 总是找不到电脑文件?学会这 3 个 Mac 搜索技巧,一秒就能找到
- LeetCode_859_python_亲密字符串
- android小游戏代码
- PS、AI、Sketch已经老了?这个新生代工具,大家都在偷学!
- 【i.MX6ULL】驱动开发12——电容触摸驱动实践(上)
- maven 详情查考 maven实战 许晓斌
- 程序员面试注意几点就够了
- android自定义秒表(精确到0.1秒,带计次功能)
- 浅谈企业数据安全风险
- 锐龙7 7840U参数 r7 7840U性能怎么样 r77840U相当于什么水平
热门文章
- matlab如何给页眉加图片,book类文档如何将页眉位于页面居中
- 服务器数据安全说明文件,safeshare能保护服务器文件在被用户浏览编辑过程中的数据安全(…...
- 玩转toB安全市场!火绒企业安全产品评测
- Zookeeper+Hadoop+Hbase+Hive+Kylin+Nginx集群搭建三(zookeeper篇)
- cmd 命令行选中 复制 粘贴
- 夜雨数竞笔记-极限(5)-夹逼准则
- 机器狗”病毒驱动部分逆向分析注释(C代码)
- 外汇交易的进场策略和出场策略
- 织梦dede 后台“标题织梦内容管理系统”修改方法
- 小散量化炒股记|要克服人性弱点?激活股票全自动化交易!