网站开发软件系统,水立方建设集团有限公司网站,做网站如何下载别人网站图片,六感程序网站建设题目链接
打家劫舍
题目描述 注意点
如果两间相邻的房屋在同一晚上被小偷闯入#xff0c;系统会自动报警0 nums[i] 400
解答思路
最初想的是使用深度优先遍历#xff0c;到达任意一个位置时#xff0c;小偷想要偷窃最高金额#xff0c;一定要选择后面第2个房…题目链接
打家劫舍
题目描述 注意点
如果两间相邻的房屋在同一晚上被小偷闯入系统会自动报警0 nums[i] 400
解答思路
最初想的是使用深度优先遍历到达任意一个位置时小偷想要偷窃最高金额一定要选择后面第2个房屋或后面第3个房屋所以dfs遍历时根据后面第2个房屋和后面第3个房屋的金额判断当前位置的最高金额使用dfs同一个房屋会被计算多次当数据量变大时会超时选择使用动态规划解决本题其思想为任意一个房屋的金额由其前面第2个房屋及前面第3个房屋的最高金额决定所以只需要一次遍历就可不断推出后面房屋的最大金额
代码
class Solution {public int rob(int[] nums) {if (nums.length 1) {return nums[0];}if (nums.length 2) {return Math.max(nums[0], nums[1]);}int n nums.length;int[] dp new int[n];dp[0] nums[0];dp[1] nums[1];dp[2] nums[0] nums[2];for (int i 3; i n; i) {dp[i] nums[i] Math.max(dp[i - 2], dp[i - 3]);}return Math.max(dp[n - 1], dp[n - 2]);}
}关键点
动态规划的思想