zoukankan      html  css  js  c++  java
  • [LeetCode] HouseRobber 动态规划

    You are a professional robber planning to rob houses along a street. Each house has a certain amount of money stashed, the only constraint stopping you from robbing each of them is that adjacent houses have security system connected and it will automatically contact the police if two adjacent houses were broken into on the same night.

    Given a list of non-negative integers representing the amount of money of each house, determine the maximum amount of money you can rob tonight without alerting the police.

    思路:这是一道动态规划的题目,先列出动态方程max[i]=Max{max[i-2]+nums[i],max[i-1]},根据动态方程写程序

    时间复杂度:O(n)

    代码:

        public int rob(int[] nums) {
            if(nums==null || nums.length<1) return 0;
            if(nums.length==1) return nums[0];
            if(nums.length==2) return Math.max(nums[0], nums[1]);
            int [] max=new int[nums.length];
            max[0]=nums[0];
            max[1]=Math.max(nums[0], nums[1]);
            for(int i=2;i<nums.length;i++)
            {
                max[i]=Math.max(max[i-2]+nums[i], max[i-1]);
            }
            return max[nums.length-1];
        }

    优化:

    扩展:

  • 相关阅读:
    logback配置和使用
    安装多个jdk导致eclipse打不开问题
    Spring事务管理
    使用JavaConfig配置SpringMVC
    Spring pom.xml配置
    Maven私服搭建(Nexus Repository Manager 3)
    Maven多环境配置
    Maven多模块构建实例
    Maven依赖机制
    Maven安装与配置
  • 原文地址:https://www.cnblogs.com/maydow/p/4643627.html
Copyright © 2011-2022 走看看