力扣198. 打家劫舍

Problem: 198. 打家劫舍

文章目录

题目描述

思路

1.定义状态:dp[i]表示从第i个房子开始偷起可以偷得的最大金额数目;
2.状态转移:由于不能连续的偷相邻的两个房子,则为了使得从第i个房子开始偷起是最大金额则要判断
是从当前第i个房子开始偷(代码中表示为nums[i] + dp[i + 2]),还是不偷当前第i个房子,而是从第i + 1个房子开始偷(代码中表示为dp[i + 1])即最终得到dp[i] = max(dp[i + 1], nums[i] + dp[i + 2])

复杂度

时间复杂度:

O ( n ) O(n) O(n);其中 n n n为数组nums的长度

空间复杂度:

O ( n ) O(n) O(n)

Code

java 复制代码
class Solution {
    /**
     * Get the maximum amount
     *
     * @param nums Given array(Store the amount of each house)
     * @return int
     */
    public int rob(int[] nums) {
        int n = nums.length;
        int[] dp = new int[n + 2];
        for (int i = n - 1; i >= 0; --i) {
            dp[i] = Math.max(dp[i + 1], nums[i] + dp[i + 2]);
        }
        return dp[0];
    }
}
相关推荐
熬了夜的程序员1 小时前
【LeetCode】114. 二叉树展开为链表
leetcode·链表·深度优先
大胆飞猪5 小时前
递归、剪枝、回溯算法---全排列、子集问题(力扣.46,78)
算法·leetcode·剪枝
Kisorge7 小时前
【电机控制】基于STM32F103C8T6的二轮平衡车设计——LQR线性二次线控制器(算法篇)
stm32·嵌入式硬件·算法
铭哥的编程日记8 小时前
深入浅出蓝桥杯:算法基础概念与实战应用(二)基础算法(下)
算法·职场和发展·蓝桥杯
Swift社区8 小时前
LeetCode 421 - 数组中两个数的最大异或值
算法·leetcode·职场和发展
cici158748 小时前
基于高光谱成像和偏最小二乘法(PLS)的苹果糖度检测MATLAB实现
算法·matlab·最小二乘法
StarPrayers.9 小时前
自蒸馏学习方法
人工智能·算法·学习方法
大锦终9 小时前
【动规】背包问题
c++·算法·动态规划
智者知已应修善业10 小时前
【c语言蓝桥杯计算卡片题】2023-2-12
c语言·c++·经验分享·笔记·算法·蓝桥杯
hansang_IR10 小时前
【题解】洛谷 P2330 [SCOI2005] 繁忙的都市 [生成树]
c++·算法·最小生成树