leetcode198专题

leetcode198打家劫舍

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

代码随想录算法训练营第四十四天|LeetCode198 打家劫舍、LeetCode213 打家劫舍Ⅱ

题1: 指路:198. 打家劫舍 - 力扣(LeetCode) 思路与代码: 对于这个题,拿房屋i举例,我们需要考虑的是否确定偷取这个房屋,如果确定偷取这个房屋,那么我们将得到房屋i的金币也就是nums[i],但是因为不能偷取相邻的房屋,那么得到nums[i]和前i-2个房屋最大金币数的同时失去的是nums[i-1],否则不偷取这个房屋,那么考虑偷取的就是第i-1个房屋。这里我们就需要判断这

leetcode198 打家劫舍

思路 有点像走楼梯,只是考虑相邻,也就是说你打算偷a[i],那你就不能偷a[i-1]的,然后可以递归的想。 如果money[i]表示第i个房间的钱,sum[i]表示此时在第i个房间一共偷到的最多的钱 错误公式 sum[i] = sum[i-1] + money[i]; 就是隔着偷 最后只需要计算最后两个就可以了 1 2 3 4 计算 (1+3 =4 )<( 2+4 =6) 但是也可以偷第1家(

【代码随想录算法训练营第四十八天 | LeetCode198.打家劫舍、213.打家劫舍II、337.打家劫舍III】

代码随想录算法训练营第四十八天 | LeetCode198.打家劫舍、213.打家劫舍II、337.打家劫舍III 一、198.打家劫舍 解题代码C++: class Solution {public:int rob(vector<int>& nums) {if (nums.size() == 0) return 0;if (nums.size() == 1) return nums[

LeetCode198.打家劫舍

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

Leetcode198. 打家劫舍问题

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

【刷刷刷,爽!】leetcode198. 打家劫舍

题目如上! 这是一道非常非常标准的初级动规题。属于走楼梯的进阶版。所以我们尝试把他变成走楼梯。 怎么变?或者说是怎么看成走楼梯。 答案是!!!! 看最后一个数。 往往会最有灵感。 比如示例1中[1,2,3,4],最后一个是4,他后面没有数字了,很容易就会想到两种情况,“我要达成最优解,带还是不带这个数字呢?” 此时,答案的后门就敞开了。 带了这个数,就要再加上隔一个数的那个数下的最优解,也就是

数据结构学习 Leetcode198 打家劫舍

动态结构 最长上升子序列 题目:   解法一: 思路: 状态:F[i]前i间房能偷到的最大金额。 转移方程: 偷和不偷取最大 如果不偷:F[i-1]如果偷:nums[i]+F[i-2]如果偷就不能偷前一个,所以要从F[i-2]开始选。 注意这里前一个房子(i-1)偷没偷是不影响这个F[i-2]的,不管怎么样,写F[i-2]就是对的。因为: 如果算F[i-1]的时候,第i