您好,欢迎来到伴沃教育。
搜索
您的当前位置:首页Leetcode 213. House Robber II

Leetcode 213. House Robber II

来源:伴沃教育

思路:变成环形屋子后,最关键的改变是数组中第一个房子受到了最后一个房子的制约,因此如果选了第一个房子,可选范围将除去最后一个房子;如果不选第一个房子,最后一个房子将在可选范围内。
稍稍修改之前house robber的方法,即可得出答案。

public int rob(int[] nums) {
    if (nums == null || nums.length == 0) {
        return 0;
    }
    if (nums.length == 1) {
        return nums[0];
    }
    int len = nums.length;
    return Math.max(robHelper(nums, 0, len - 2), robHelper(nums, 1, len - 1));
}

public int robHelper(int[] nums, int start, int end) {
    if (start > end) {
        return 0;
    }
    int[] maxMoney = new int[end - start + 2];
    maxMoney[1] = nums[start];
    for (int index = 2, i = start + 1; i <= end; i++, index++) {
        maxMoney[index] = Math.max(maxMoney[index-1], maxMoney[index-2] + nums[i]);
    }
    return maxMoney[end - start + 1];
}

Copyright © 2019- bangwoyixia.com 版权所有 湘ICP备2023022004号-2

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务