LeetCode 198. 打家劫舍 Java

LeetCode 198. 打家劫舍 Java_第1张图片

这种求什么最大钱数的问题,先想到动态规划或者贪心算法。
动态规划的思路是,先判断只有一间房子的时候,那么就偷这家。有两间房,偷钱多的。
有k间房,如果偷第k间房,则k-1不能偷,最大钱数为:前k-2间房的最大钱数+k。
如果不偷第k间房,最大钱数为:前k-1间房的最大钱数。
最后处理一下数组为空的情况。

class Solution {
    public int rob(int[] nums) {
        int length = nums.length;
        if(length==0){
            return 0;
        }
        if(length==1){
            return nums[0];
        }
        int dp[] = new int[length];
        dp[0] = nums[0];
        dp[1] = Math.max(nums[0],nums[1]);
        for(int i=2;i

你可能感兴趣的:(LeetCode 198. 打家劫舍 Java)