代码随想录 213.打家劫舍Ⅱ

思路:这道题是在198.打家劫舍的基础上,出现了环。对于一个数组,成环的条件主要有如下三种情况。

1.考虑不包含首尾元素:

2.考虑包含首元素,不包含尾元素:

3.考虑包含尾元素,不包含首元素:

4.注意:

(1)这里只是考虑。以情况3为例,虽然是考虑包含尾元素,但不一定要选尾元素。对于情况3,取nums[1]和nums[3]就是最大的。

(2)情况2和情况3都包含情况1了,所以只考虑情况2和情况3就可以了。

附代码:

java 复制代码
class Solution {
    public int rob(int[] nums) {
        if(nums == null || nums.length == 0){
            return 0;
        }
        int len = nums.length;
        if(len == 1){
            return nums[0];
        }
        return Math.max(robAction(nums,0,len - 1),robAction(nums,1,len));
    }

    int robAction(int[] nums,int start,int end){
        int[] res = new int[3];
        for(int i = start;i < end;i++){
            res[2] = Math.max(res[0] + nums[i],res[1]);
            res[0] = res[1];
            res[1] = res[2];
        }
        return res[2];
    }
}
相关推荐
what丶k1 小时前
深度解析:以Kafka为例,消息队列消费幂等性的实现方案与生产实践
java·数据结构·kafka
爱敲代码的TOM3 小时前
基础算法技巧总结2(算法技巧零碎点,基础数据结构,数论模板)
数据结构·算法
惊讶的猫3 小时前
InnoDB选用B+树作为索引的原因
数据结构·b树
历程里程碑3 小时前
子串-----和为 K 的子数组
java·数据结构·c++·python·算法·leetcode·tornado
liu****3 小时前
Qt进阶实战:事件处理、文件操作、多线程与网络编程全解析
开发语言·网络·数据结构·c++·qt
寄存器漫游者3 小时前
数据结构 二叉树核心概念与特性
数据结构·算法
皮皮哎哟3 小时前
数据结构:从队列到二叉树基础解析
c语言·数据结构·算法·二叉树·队列
一匹电信狗4 小时前
【高阶数据结构】并查集
c语言·数据结构·c++·算法·leetcode·排序算法·visual studio
Hello World . .4 小时前
数据结构:二叉树(Binary tree)
c语言·开发语言·数据结构·vim
DeeplyMind5 小时前
少儿科技启蒙教材:《数据结构启蒙》
数据结构·计算机科学·少儿科技读物·蓝桥杯青少组