动态规划算法-简单多状态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]);
    }
}
相关推荐
第九序言T7 小时前
Python 数据处理进阶(十八)批量处理同结构文件:一个文件夹一次跑完
开发语言·python·自动化·pandas·数据处理
ZhengEnCi8 小时前
Agent 架构怎么选:从单 Agent 到多 Agent 编排的选型决策指南
算法·架构
龙亘川8 小时前
构建城市公共安全数字底座:亘川智城智慧安防系统全维度解读
java·大数据·开发语言·人工智能·信息可视化
程序喵大人8 小时前
【C++入门】内存模型与资源管理 - 09 shared_ptr 和 weak_ptr 解决共享,也带来代价
开发语言·c++·资源管理·智能指针·内存模型
秋天的怀念_David9 小时前
第二十二夜 · 数字迷雾
java·程序人生·算法
Raas1009 小时前
AI网关部署方案?从部署到上线全流程
java·开发语言·人工智能·gateway·ai网关·企业级ai网关·企业级ai产品
Pniubi9 小时前
力扣283移动零(双指针法)
算法·leetcode·职场和发展
hhb_6189 小时前
大模型落地三重优化实战
人工智能·算法·机器学习
云和数据.ChenGuang10 小时前
光哥说Python RAG 系统需要哪些评估指标:从检索到生成的全链路评测指南
网络·人工智能·python·算法·langchain
专注仿真10 小时前
线性回归和逻辑回归算法详解
开发语言·人工智能·python·大模型训练·控制算法