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

    This problem is a little tricky at first glance. However, if you have finished the House Robber problem, this problem can simply be decomposed into two House Robber problems. Suppose there are n houses, since house 0 and n - 1 are now neighbors, we cannot rob them together and thus the solution is now the maximum of

    1. Rob houses 0 to n - 2;
    2. Rob houses 1 to n - 1.

    The code is as follows (some edge cases are handled explicitly).

     1     int robHelper(vector<int>& nums, int left, int right){
     2         if (left == right) return nums[left];
     3         vector<int> money(right - left + 1, 0);
     4         money[0] = nums[left];
     5         money[1] = max(nums[left], nums[left + 1]);
     6         for (int i = 2; i <= right - left; i++)
     7             money[i] = max(money[i - 1], money[i - 2] + nums[left + i]);
     8         return money[money.size() - 1];
     9     }
    10     int rob(vector<int>& nums) {
    11         if (nums.empty()) return 0;
    12         int n = nums.size();
    13         if (n == 1) return nums[0];
    14         return max(robHelper(nums, 0, n - 2), robHelper(nums, 1, n - 1));
    15     }  
  • 相关阅读:
    DBC的故事
    MDF,了解一下
    PAT A 1059 Prime Factors (25分)
    素数的判断与素数表的获取
    PAT A 1014 Waiting in Line (30分)
    n皇后问题(全排列+回溯)
    最长回文子串(c++)
    传输方式的分类
    OSI模型概述
    进制转换
  • 原文地址:https://www.cnblogs.com/jcliBlogger/p/4548002.html
Copyright © 2011-2022 走看看