当前位置: 首页 > article >正文

213. 打家劫舍 II --力扣 --JAVA

题目

你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。这个地方所有的房屋都 围成一圈 ,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警 。

给定一个代表每个房屋存放金额的非负整数数组,计算你 在不触动警报装置的情况下 ,今晚能够偷窃到的最高金额。

解题思路

  1. 将环断开,分情况为偷首节点和不偷首节点的情况;
  2. 限制起始和结束位置,对偷盗金额进行最大值计算;

代码展示

class Solution {
    public int rob(int[] nums) {
        if(nums.length == 1){
            return nums[0];
        }
        int n = nums.length;
        //分两种情况计算:偷首节点和不偷首节点
        return Math.max(nums[0] + rob1(nums, 2 , n - 1), rob1(nums, 1, n));
    }

    private int rob1(int[] nums, int start, int end){
        int steal0 = 0;     //上一节点未偷
        int steal1 = 0;     //当前节点最大值
        for (int i = start; i < end; i++){
            int max = Math.max( steal1, steal0 + nums[i]);
            steal0 = steal1;
            steal1 = max;
        }
        return steal1;
    }
}


http://www.kler.cn/a/159605.html

相关文章:

  • Ceph的pool有两种类型
  • 【智能电视??】关于电视、以及IPTV 和OTT TV区别(了解)
  • 【MySQL 保姆级教学】事务的自动提交和手动提交(重点)--上(13)
  • vue3+elementplus+虚拟树el-tree-v2+多条件筛选过滤filter-method
  • makefile 设置动态库路径参数
  • 机器学习总结
  • 华为云obs在java中的使用
  • 应用层自定义协议
  • Jmeter测试移动接口性能 —— 压测
  • MySQL性能调优-2-实际优化案例
  • Redis高效缓存:加速应用性能的利器
  • 反序列化漏洞详解(二)
  • 【MySQL环境配置在虚拟机中】
  • 力扣面试经典150题——Unix简化路径
  • SQL通配符字符
  • 有什么样的管理模式可以改善团队关系
  • [Realtek sdk-3.4.14b] RTL8197FH-VG+RTL8812FR WiFi黑名单及剔除已连接终端功能实现
  • 02、pytest环境准备
  • MUC\GD32低功耗模式简介
  • CSP-矩阵运算
  • Elasticsearch:什么是向量嵌入?
  • 【Scopus检索】第六届生物技术与生物医学国际学术会议(ICBB 2024)
  • 使用docker搭建『Gitea』私有仓库
  • Objaverse:大规模3D模型开放数据集
  • git基础
  • unsafe类和varhandle类讲解