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 Robberproblem, 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 (n <= 2) are handled explicitly.

     1 class Solution {
     2 public:
     3     int rob(vector<int>& nums) {
     4         int n = nums.size();
     5         if (n <= 2) return n ? (n == 1 ? nums[0] : max(nums[0], nums[1])) : 0;
     6         return max(robber(nums, 0, n - 2), robber(nums, 1, n -1));
     7     }
     8 private:
     9     int robber(vector<int>& nums, int l, int r) {
    10         int pre = 0, cur = 0;
    11         for (int i = l; i <= r; i++) {
    12             int temp = max(pre + nums[i], cur);
    13             pre = cur;
    14             cur = temp;
    15         } 
    16         return cur;
    17     }
    18 };
  • 相关阅读:
    Linux安装nginx
    linux目录结构
    Django-admin
    celery
    Flask-Migrate
    Flask-Script
    Flask-SQLAlchemy
    SQLAlchemy
    mongodb的增删改查
    websocket的加密和解密过程
  • 原文地址:https://www.cnblogs.com/jcliBlogger/p/4732035.html
Copyright © 2011-2022 走看看