DP AC


  • 0
    E

    int preYes=0;//偷了i-1
    int preNo=0;//未偷i-1
    for(int i=0;i<nums.length;i++){
    int temp = preYes;
    preYes = preNo +nums[i];//要想在下一次成为偷过i-1,那么最大值只能是本次没有偷i-1的+nums[i];
    preNo=Math.max(temp, preNo);//要想在下一次成为未偷i-1,那么可以取本次的preYes或preNo,
    //不能涉及nums[i],不然在下一次就成为了偷过i-1了。
    //为了偷的更多,当然贪心点取两者最大的一个。
    }
    return Math.max(preNo,preYes);


  • 0
    E

    public int rob(int[] nums) {
    int preYes=0;//偷了i-1
    int preNo=0;//未偷i-1
    for(int i=0;i<nums.length;i++){
    int temp = preYes;
    preYes = preNo +nums[i];//要想在下一次成为偷过i-1,那么最大值只能是本次没有偷i-1的+nums[i];
    preNo=Math.max(temp, preNo);//要想在下一次成为未偷i-1,那么可以取本次的preYes或preNo,
    //不能涉及nums[i],不然在下一次就成为了偷过i-1了。
    //为了偷的更多,当然贪心点取两者最大的一个。
    }
    return Math.max(preNo,preYes);
    }


Log in to reply
 

Looks like your connection to LeetCode Discuss was lost, please wait while we try to reconnect.