198. House Robber

来源:互联网 发布:java简单编程题 编辑:程序博客网 时间:2024/06/06 16:30

1.递归

public class Solution {    public static int[] result;    public int solve(int idx,int[] nums){        if(idx < 0){            return 0;        }        if(result[idx] >=0 ){            return result[idx];        }        result[idx] = Math.max(nums[idx] + solve(idx-2,nums),solve(idx-1,nums));                    return result[idx];    }    public int rob(int[] nums) {        result = new int[nums.length];        for(int i = 0;i<nums.length;i++){            result[i] = -1;        }        return solve(nums.length -1 ,nums);    }}



2.非递归

public class Solution {    public static int[] result;        public int rob(int[] nums) {        if(nums.length == 0 ){            return 0;        }        if(nums.length == 1){            return nums[0];        }        result = new int[nums.length];        result[0] = nums[0];        result[1] = Math.max(nums[0],nums[1]);        for(int idx = 2 ; idx< nums.length; idx++) {            result[idx] = Math.max(nums[idx] + result[idx-2],result[idx-1]);                        }                return result[nums.length -1];    }}


原创粉丝点击