题目链接
    image.png
    取下标不相邻的数字。

    1. class Solution {
    2. // 迭代 。。 优化,可以将两个数字来存,降低空间复杂度
    3. public int rob(int[] nums) {
    4. if(nums.length == 1) return nums[0];
    5. int[] arr = new int[nums.length];
    6. arr[0] = nums[0];
    7. arr[1] = Math.max(nums[0],nums[1]);
    8. for(int i = 2; i < nums.length; i++) {
    9. arr[i] = Math.max(arr[i-1], arr[i-2]+nums[i]);
    10. }
    11. return arr[nums.length-1];
    12. }
    13. // 递归。超时
    14. public int rob(int[] nums) {
    15. return resursion(nums.length-1, nums);
    16. }
    17. public int resursion(int index, int[] arr) {
    18. if(index < 0) return 0;
    19. if(index == 0) return arr[0];
    20. return Math.max(resursion(index-1,arr), resursion(index-2,arr)+arr[index]);
    21. }
    22. }