动态规划算法-简单多状态dp问题:12.打家劫舍Ⅱ

题目链接:213. 打家劫舍 II(中等)

算法原理:

解法:动态规划

Java代码:

java 复制代码
/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 王洋
 * Date: 2025-10-16
 * Time: 22:50
 */
class Solution {
    //213. 打家劫舍 II
    //看完吴小哲的代码后,找到错误了
    //if(k>j) return 0;这里不是≥,就是>
    //rod1的返回值是f[j]和g[j],传入的参数不是边界,而是实际能到的地方
    int n;
    //int[] f,g;移除全局变量,防止计算y时,x的计算结果的影响
    public int rob(int[] nums) {
        n=nums.length;
        if(n==0) return 0;
        if(n==1) return nums[0];//新增处
        //int[] f=new int[n];
        //int[] g=new int[n];
        //f[0]=nums[0];g[0]=0;
        //第一个偷
        int x=rob1(2,n-2,nums)+nums[0];
        //第一个不偷
        int y=rob1(1,n-1,nums);
        return Math.max(x,y);
    }
    public int rob1(int k,int j,int[] nums){
        if(k>j) return 0;
        int[] f=new int[n];
        int[] g=new int[n];
        f[k]=nums[k];g[k]=0;
        for(int i=k+1;i<=j;i++){
            f[i]=g[i-1]+nums[i];
            g[i]=Math.max(f[i-1],g[i-1]);
        }
        return Math.max(g[j],f[j]);
    }
}
相关推荐
BHXDML21 小时前
Java 设计模式详解
java·开发语言·设计模式
程序员三藏21 小时前
软件测试环境搭建及测试过程
自动化测试·软件测试·python·功能测试·测试工具·职场和发展·测试用例
CCPC不拿奖不改名1 天前
数据处理与分析:pandas基础+面试习题
开发语言·数据结构·python·面试·职场和发展·pandas
2501_901147831 天前
环形房屋打家劫舍算法
考研·算法·leetcode·高考
余瑜鱼鱼鱼1 天前
Java数据结构:从入门到精通(十三)
java·开发语言
wzfj123451 天前
FreeRTOS xTaskCreateStatic 详解
开发语言·c#
智驱力人工智能1 天前
守护矿山动脉 矿山皮带跑偏AI识别系统的工程化实践与价值 皮带偏离检测 皮带状态异常检测 多模态皮带偏离监测系统
大数据·人工智能·opencv·算法·安全·yolo·边缘计算
运维行者_1 天前
远程办公场景 NFA:从网络嗅探与局域网流量监控软件排查团队网络卡顿问题
运维·服务器·开发语言·网络·自动化·php
txinyu的博客1 天前
C++ 智能指针 (shared_ptr/weak_ptr) 全解析
开发语言·c++
没有bug.的程序员1 天前
Java内存模型(JMM)深度解析:从 volatile 到 happens-before 的底层机制
java·开发语言·并发编程·volatile·内存模型·jmm·happens-before