Leetcode 刷题笔记(二十六) ——动态规划篇之经典问题:打家劫舍
文章目录
- 系列文章目录
- 前言
- 题录
- 198. 打家劫舍
- 213. 打家劫舍 II
系列文章目录
一、 数组类型解题方法一:二分法
二、数组类型解题方法二:双指针法
三、数组类型解题方法三:滑动窗口
四、数组类型解题方法四:模拟
五、链表篇之链表的基础操作和经典题目
六、哈希表篇之经典题目
七、字符串篇之经典题目
八、字符串篇之 KMP
九、解题方法:双指针
十、栈与队列篇之经典题目
十 一、栈与队列篇之 top-K 问题
十 二、二叉树篇之二叉树的前中后序遍历
十 三、二叉树篇之二叉树的层序遍历及相关题目
十 四、二叉树篇之二叉树的属性相关题目
十 五、 二叉树篇之二叉树的修改与构造
十 六、 二叉树篇之二叉搜索树的属性
十 七、二叉树篇之公共祖先问题
十 八、二叉树篇之二叉搜索树的修改与构造
十 九、回溯算法篇之组合问题
二 十、回溯算法篇之分割、子集、全排列问题
二十一、贪心算法篇之入门题目
二十二、贪心算法篇之进阶题目
二十三、动态规划篇之基础题目
二十四、动态规划篇之背包问题:01背包
二十五、动态规划篇之背包问题:完全背包
更新中 … …
前言
刷题路线来自 :代码随想录
题录
198. 打家劫舍
Leetcode 链接
题解:
dp[i]: 偷到 i 房间盗窃的最大金额
递推公式: dp[i] = max(不偷 i 房间,偷 i 房间) = Math.max(dp[i - 1], dp[i - 2] + nums[i - 1]);
class Solution {public int rob(int[] nums) {int len = nums.length;int[] dp = new int[len + 1];dp[1] = nums[0];for (int i = 2; i <= len; i++) {dp[i] = Math.max(dp[i - 1], dp[i - 2] + nums[i - 1]);}return dp[len];}
}
213. 打家劫舍 II
Leetcode 链接
题解:
不同于上题的是最后一个房间与第一个房间相连,也就是者两个房间只能偷一个,我们可以分两个区间偷
class Solution {public int rob(int[] nums) {int len = nums.length;if (len == 1) return nums[0];return Math.max(robRange(Arrays.copyOfRange(nums, 0, len - 1)), robRange(Arrays.copyOfRange(nums, 1, len)));}public int robRange(int[] nums) {int len = nums.length;int[] dp = new int[len + 1];dp[1] = nums[0];for (int i = 2; i <= len; i++) {dp[i] = Math.max(dp[i - 1], dp[i - 2] + nums[i - 1]);}return dp[len];}
}
Leetcode 刷题笔记(二十六) ——动态规划篇之经典问题:打家劫舍相关推荐
- Leetcode刷题笔记:栈与队列篇
基础知识 栈和队列的原理大家应该很熟悉了,队列是先进先出,栈是先进后出. 如图所示: 那么我这里再列出四个关于栈的问题,大家可以思考一下.以下是以C++为例,使用其他编程语言的同学也对应思考一下,自己 ...
- 【leetcode刷题笔记】动态规划
#[leetcode刷题笔记]动态规划 石子游戏 public boolean stoneGame(int[] piles) {int N = piles.length;// dp[i][j] is ...
- LeetCode刷题笔记-动态规划-day4
文章目录 LeetCode刷题笔记-动态规划-day4 55. 跳跃游戏 1.题目 2.解题思路 3.代码 45. 跳跃游戏 II 1.题目 2.解题思路 3.代码 LeetCode刷题笔记-动态规划 ...
- 刷题笔记(十四)--二叉树:层序遍历和DFS,BFS
目录 系列文章目录 前言 题录 102. 二叉树的层序遍历 BFS DFS_前序遍历 107. 二叉树的层序遍历 II BFS DFS 199. 二叉树的右视图 BFS DFS 637. 二叉树的层平 ...
- LeetCode刷题笔记(算法思想 四)
LeetCode刷题笔记(算法思想 四) 七.动态规划 斐波那契数列 70. 爬楼梯 198. 打家劫舍 213. 打家劫舍 II 信件错排 母牛生产 矩阵路径 64. 最小路径和 62. 不同路径 ...
- LeetCode刷题笔记2——数组2
LeetCode刷题笔记2--数组2 重塑数组 题目 在 MATLAB 中,有一个非常有用的函数 reshape ,它可以将一个 m x n 矩阵重塑为另一个大小不同(r x c)的新矩阵,但保留其原 ...
- LeetCode刷题笔记汇总
LeetCode刷题笔记汇总 第一次刷LeetCode写的一些笔记. 1.两数之和 3.无重复字符的最长子串 15.三数之和 18.四数之和 19.删除链表的倒数第 N 个结点 20.有效的括号 21 ...
- leetcode刷题笔记——二分查找
leetcode刷题笔记--二分查找 目前完成的贪心相关的leetcode算法题序号: 中等:80,81 困难:4 来源:力扣(LeetCode) 链接:https://leetcode-cn.com ...
- 卷进大厂系列之LeetCode刷题笔记:二分查找(简单)
LeetCode刷题笔记:二分查找(简单) 学算法,刷力扣,加油卷,进大厂! 题目描述 涉及算法 题目解答 学算法,刷力扣,加油卷,进大厂! 题目描述 力扣题目链接 给定一个 n 个元素有序的(升序) ...
- 小何同学的leetcode刷题笔记 基础篇(01)整数反转
小何同学的leetcode刷题笔记 基础篇(01)整数反转[07] *** [01]数学取余法*** 对数字进行数位操作时,常见的方法便是用取余的方法提取出各位数字,再进行操作 操作(1):对10取余 ...
最新文章
- 用Response.Write和Page.RegisterStartupScript显示的提示框有什么区别
- python每天学习30分钟系列
- Android 面试题集整理
- app vue 真机运行_uni-app黑魔法:小程序自定义组件运行到H5平台
- vue 前端商城框架_前端工程师要掌握几个Vue框架
- 线性代数拾遗(一):线性方程组、向量方程和矩阵方程
- 汇编语言:编程,将datasg段中的每个单词改为大写字母
- andriod手机客户端自动化测试工具整理
- 分布式存储 CentOS6.5虚拟机环境搭建FastDFS-5.0.5集群
- etcd-java使用
- Thread.Sleep太久,界面卡死
- FPGA同步复位异步复位
- Fluentd日志采集使用教程
- 深入理解MyBatis缓存
- XML 用户界面语言(XUL)开发简介
- 彻底带你入门RDS数据库「玩转华为云」
- 小米手机第三方卡刷软件_小米手机通用详细图形刷机教程(四): 刷入第三方系统...
- 学计算机的什么是镜像,一、什么是windows镜像?什么是Ghost?它们有什么优缺点?...
- python大数据读取分析_python如何读取大数据
- 整理的金蝶云苍穹初级练习题
热门文章
- 深度学习TF—5.tf.kears高层API
- 机器学习基础算法22-提升理论-GBDT、XGBoost、Adaboost、方差与偏方
- 机器学习算法基础6-模型保存与加载、逻辑回归、Kmeans(聚类)
- Qcon大会上电子工业出版社博文视点提供全程技术图书支持
- C/C++集成开发环境搭建
- multisim安装后无法连接数据库_Kepserver连接Mysql教程(一)MySQL5.5数据库安装
- mysql 数据类型大全_MySQL 数据类型_mysql数据类型大全
- 软件测试--04测试用例/测试方法
- 7-7 评分规则 (5 分)
- HTML5 — 知识篇总结《II》【HTML5大力支持的语义化思想与规范】