213. 打家劫舍 II


Python版本

python 复制代码
class Solution:
    def rob(self, nums: List[int]) -> int:
        n = len(nums)
        if(n == 1):
            return nums[0]
        if(n == 2):
            return max(nums[0],nums[1])
        def robMoney(left:int,right:int)->int:
            f1,f2 = nums[left],max(nums[left],nums[left+1])
            for i in range(left+2,right+1):
                t = f2
                f2 = max(f2,f1+nums[i])
                f1 = t
            return f2
        return max(robMoney(0,n-2),robMoney(1,n-1))

Java版本

java 复制代码
class Solution {
    public int robMoney(int[] nums,int left,int right){
        int t,f1 = nums[left],f2 = Math.max(nums[left],nums[left+1]);
        for(int i = left+2; i <= right; i++){
            t = f2;
            f2 = Math.max(f2,f1+nums[i]);
            f1 = t;
        }
        return f2;
    }
    public int rob(int[] nums) {
        int n = nums.length;
        if(n == 1) return nums[0];
        if(n == 2)return Math.max(nums[0],nums[1]);
        return Math.max(robMoney(nums,0,n-2),robMoney(nums,1,n-1));
    }
}

CPP版本

cpp 复制代码
class Solution {
public:
int robMoney(vector<int>& nums,int left,int right){
    int t,f1 = nums[left],f2 = max(nums[left],nums[left+1]);
    for(int i = left+2; i <= right; i++){
        t = f2;
        f2 = max(f2,f1+nums[i]);
        f1 = t;
    }
    return f2;
}
    int rob(vector<int>& nums) {
        int n = nums.size();
        if(n == 1)return nums[0];
        if(n == 2)return max(nums[0],nums[1]);
        return max(robMoney(nums,0,n-2),robMoney(nums,1,n-1));
    }
};
相关推荐
屁股割了还要学9 分钟前
【数据结构入门】排序算法:插入排序
c语言·开发语言·数据结构·算法·青少年编程·排序算法
10 分钟前
JAVA-15 (2025.08.20学习记录)
java·开发语言·学习
whitepure19 分钟前
万字详解Java枚举
java·后端
用户83562907805119 分钟前
在 Java 中读取 Excel 文件
java·后端
农场主John20 分钟前
(栈)Leetcode155最小栈+739每日温度
windows·python·算法·leetcode·
qianmoq21 分钟前
第02章:创建Stream的N种方法:让数据流起来
java
Fireworkitte25 分钟前
Tomcat里catalina.sh详解
java
whitepure25 分钟前
万字详解Java注解
java·后端
探索java28 分钟前
Tomcat Context的核心机制
java·后端·tomcat
MicroTech202531 分钟前
微算法科技(NASDAQ: MLGO)研究分片技术:重塑区块链可扩展性新范式
算法·区块链