题解 | 打家劫舍(一)

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param nums int整型一维数组
     * @return int整型
     */
    public int rob (int[] nums) {
        if (nums.length == 1) {
            return nums[0];
        }
        if (nums.length < 3) {
            return Math.max(nums[0], nums[1]);
        }
       int[] data = new int[nums.length];
        // write code here
        return robSolve(nums, nums.length - 1,data);
    }

    public int robSolve (int[] nums, int n, int[] data) {
        if (n < 0) {
            return 0;
        }
        if (n < 2) {
            return nums[n];
        }
        // write code here


        if (n < 0) {
            return 0;
        }
        if (n < 2) {
            return nums[n];
        }
        if (data[n] != 0) {
            return data[n];
        }
        int max = Math.max(Math.max(robSolve(nums, n - 1, data), robSolve(nums, n - 2,
                                    data) + nums[n]),
                           robSolve(nums, n - 3, data) + nums[n]);

        data[n] = max;
        return max;
    }
}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务