zoukankan      html  css  js  c++  java
  • [LeetCode][JavaScript]House Robber II

    House Robber II

    Note: This is an extension of House Robber.

    After robbing those houses on that street, the thief has found himself a new place for his thievery so that he will not get too much attention. This time, all houses at this place are arranged in a circle. That means the first house is the neighbor of the last one. Meanwhile, the security system for these houses remain the same as for those in the previous street.

    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.

    https://leetcode.com/problems/house-robber-ii/


    和House Robber新相比,房子首尾相连。

    动态规划和上一题一样的思路:http://www.cnblogs.com/Liok3187/p/4842444.html

    分成2次,第一次从第一间房子开始到倒数第二间结束;

    第二次从第二间开始到最后一间结束。

    粗暴地写两遍:

     1 /**
     2  * @param {number[]} nums
     3  * @return {number}
     4  */
     5 var rob = function(nums) {
     6     if(nums.length === 0){
     7         return 0;
     8     }else if(nums.length === 1){
     9         return nums[0];
    10     }
    11     var dp = [];
    12     dp[0] = 0;
    13     dp[1] = nums[0];
    14     for(var i = 2; i <= nums.length - 1; i++){
    15         dp[i] = Math.max(dp[i - 2] + nums[i - 1], dp[i - 1]);
    16     }
    17     var candidate = dp[nums.length - 1];
    18 
    19     dp = [];
    20     dp[1] = 0;
    21     dp[2] = nums[1];
    22     for(var i = 3; i <= nums.length; i++){
    23         dp[i] = Math.max(dp[i - 2] + nums[i - 1], dp[i - 1]);
    24     }
    25 
    26     return Math.max(candidate, dp[nums.length]);
    27 };

    封装成方法:

     1 /**
     2  * @param {number[]} nums
     3  * @return {number}
     4  */
     5 var rob = function(nums) {
     6     if(nums.length === 0){
     7         return 0;
     8     }else if(nums.length === 1){
     9         return nums[0];
    10     }
    11     return Math.max(robbing(1, nums.length - 1), robbing(2, nums.length));
    12 
    13     function robbing(start, end){
    14         var dp = [];
    15         dp[start - 1] = 0;
    16         dp[start] = nums[start - 1];
    17         for(var i = start + 1; i <= end; i++){
    18             dp[i] = Math.max(dp[i - 2] + nums[i - 1], dp[i - 1]);
    19         }
    20         return dp[end];
    21     }   
    22 };
  • 相关阅读:
    hadoop本地测试命令
    hadoop中文官网
    solr 5.2.1 tomcat 7 配置过程笔记
    很好的hadoop学习博客实际操作训练(旧版本)
    Tomcat7安装配置 for Ubuntu
    Solr with Apache Tomcat
    Linux 权限修改
    Ubuntu Server 下配置静态网络的方法
    Ubuntu Server 下的网络配置
    HBase 1.3(NOSQL) 发布,性能大幅提升
  • 原文地址:https://www.cnblogs.com/Liok3187/p/4842453.html
Copyright © 2011-2022 走看看