题解 | #打家劫舍(二),dp#

打家劫舍(二)

http://www.nowcoder.com/practice/a5c127769dd74a63ada7bff37d9c5815

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param nums int整型一维数组 
     * @return int整型
     */
    public int rob (int[] nums) {
        if(nums == null || nums.length == 0) return 0 ;
        if(nums.length == 1) return nums[0] ;
        int len = nums.length ;
        //可以偷第一家的情况(不可以偷最后一家)
        int f1[] = new int[len] ;
        f1[0] = 0 ;
        f1[1] = nums[0] ;
        for(int i = 2 ; i < len ; i++) {
            f1[i] = Math.max(f1[i-1] , f1[i-2] + nums[i-1]) ;
        }
        //不可以偷第一家的情况(可以偷最后一家)
        int f2[] = new int[len] ;
        f2[0] = 0 ;
        f2[1] = nums[1] ;
        for(int i = 2 ; i < len ; i ++) {
            f2[i] = Math.max(f2[i-1] , f2[i-2] + nums[i]) ;
        }
        return Math.max(f1[len-1] , f2[len-1]) ;
    }
}

一个菜鸟的算法刷题记录 文章被收录于专栏

分享一个菜鸟的成长记录

全部评论

相关推荐

喜欢走神的孤勇者练习时长两年半:爱华,信华,等华,黑华
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务