代码编织梦想

在这里插入图片描述

1、动态规划

我们用数组dp记录当以第i位的房子为末尾时,能够获得的最大金额。很显然,dp[0] = nums[0],dp[1] = max(nums[0], nums[1])。当我们每读入一位新的数字时,dp的更新只有两种情况:1、dp[i - 1]获得的金额更多,不需要第i间房子;2、dp[i - 2] + nums[i]获得的金额更多,我们需要跳过第i-1间房子。因此我们可以得到状态转化方程为:dp[i] = max(dp[i - 2] + nums[i], dp[i - 1])。

class Solution {
public:
    int rob(vector<int> &nums) {
        vector<int> dp(nums.size(), 0);
        if (nums.size() == 1) return nums[0];
        dp[0] = nums[0];
        dp[1] = max(nums[0], nums[1]);
        for (int i = 2; i < nums.size(); ++i) {
            dp[i] = max(dp[i - 2] + nums[i], dp[i - 1]);
        }
        return dp[nums.size() - 1];
    }
};

2、动态规划优化

由于我们在状态转化时只是用到前两个状态,所以我们可以使用两个int变量代替数组。

class Solution {
public:
    int rob(vector<int> &nums) {
        if (nums.size() == 1) return nums[0];
        int max2 = nums[0];
        int max1 = max(nums[0], nums[1]);
        for (int i = 2; i < nums.size(); ++i) {
            int temp_max = max(max2 + nums[i], max1);
            max2 = max1;
            max1 = temp_max;
        }
        return max1;
    }
};
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_43825194/article/details/127129042

leetcode-198. 打家劫舍-java_wangxizzz的博客-爱代码爱编程

LeetCode-198 House Robber 问题描述 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被

leetcode - 198 - 打家劫舍(house-robber)_javascriptliang的博客-爱代码爱编程

Create by jsliang on 2019-07-08 19:12:26Recently revised in 2019-7-8 22:06:01 一 目录 不折腾的前端,和咸鱼有什么区别 | 目录 | | --- | | 一 目录 | | 二 前言 | | 三 解题 | | 四 执行测试 | | 五 LeetCode Sub

LeetCode - 198 - 打家劫舍-爱代码爱编程

题目 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。 示例 1: 输入: [1,2,3,1] 输出: 4 解释:

leetcode-198:打家劫舍-爱代码爱编程

题目描述 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。 示例 1: 输入:[1,2,3,1] 输出:

LeetCode-198-打家劫舍 C++-爱代码爱编程

LeeCode-198-打家劫舍思路+代码 思路+代码解析状态转移方程递归算法DP算法+输出抢的房屋号main 思路+代码解析 状态转移方程 1、如果只有一家的话,就只能抢这一家,即最优解。 2、如果只有两家的话,最优解为这两家钱最多的一家 3、如果有多于两家的话,关键点为第(n-1)家。如果抢了第(n-1)家,说明在前(n-1)家里已经求

LeetCode-198 打家劫舍-爱代码爱编程

LeetCode-198 打家劫舍 考察内容: 数组、动态规划 题目描述: 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内

leetcode - 198. 打家劫舍-爱代码爱编程

leetcode - 198. 打家劫舍 题目: 代码: #include <iostream> #include <vector> using namespace std; /*动态规划 : 1)只有一间屋子,那只能是这件屋子 2)两间屋子,从这两间屋子中选择最大的那一个 3)多间屋子,k间屋子,k>2; 则,选

LeetCode-198. 打家劫舍-爱代码爱编程

LeetCode-198. 打家劫舍 难度:中等 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。 示例

LeetCode - 198. 打家劫舍 (java)-爱代码爱编程

你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。 示例: 输入:[1,2,3,1] 输出

leetcode--打家劫舍-爱代码爱编程

题目:假如ihsi一个专业的小偷,准备计划去偷窃沿街边的房子,每个房子都藏有现金,唯一限制你偷窃的因素是偷窃警报系统,如果相连两个房子同一晚上都被小偷闯入,系统就会报警。 给定一个代表每个房子内现存有金额的非负整数数组,计算你在不触发警报系统的前提下可以盗窃最大的金额。 栗子①: 输入:nums=[1,2,3,1],输出:4. 解释:偷1号房子(1

leetcode 226. invert binary tree 翻转二叉树(简单)_okokabcd的博客-爱代码爱编程

一、题目大意 给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。 示例 1: 输入:root = [4,2,7,1,3,6,9] 输出:[4,7,2,9,6,3,1] 示例 2:

剑指 offer 29. 顺时针打印矩阵【数组】_java运动猿的博客-爱代码爱编程

目录 1.题目:顺时针打印矩阵 2.解题思路: 3.代码实现: 4.执行结果:  5.心得体会: 6.知识点补充:(数组基础知识) 难度等级:简单 上一篇算法:  剑指 Offer 21. 调整数组顺序使奇数位于偶数前面【数组】 力扣此题地址: 剑指 Offer 29. 顺时针打印矩阵 - 力扣(Leet

【leetcode每日一题】2022-09-30 面试题 01.08 零矩阵 java实现_努力努力再努力@_@的博客-爱代码爱编程

文章目录 题目方案一 我的思路:两个HashSet方案二 标记数组方案三 使用两个标记变量 题目 方案一 我的思路:两个HashSet 遍历二维数组,用两个hashSet来存储0出现的行和列 在遍

【面试题 01.08. 零矩阵】_千北@的博客-爱代码爱编程

来源:力扣(LeetCode) 描述: 编写一种算法,若M × N矩阵中某个元素为0,则将其所在的行与列清零。 示例 1: 输入: [ [1,1,1], [1,0,1], [1,1,1] ] 输出: [

牛客每日刷题__18shou的博客-爱代码爱编程

✅作者简介:我是18shou,一名即将秋招的java实习生 ✨个人主页:_18shou 🔥系列专栏:牛客刷题专栏 👉 在线刷题面经模拟面试    题目 题目主要信息: 给出一组区间,区间包括起始点,要求将重叠的区间合并重叠后的区间按照起点位置升序排列 思路 方法: 排序+贪心(推荐使用) 知识点:贪心思想 贪心思想属于动态规划思

leetcode-爱代码爱编程

标题:198打家劫舍-中等 题目 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报