zoukankan      html  css  js  c++  java
  • Leetcode题目: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.

    题目解答:

    这个题目是之前House Robber的扩展,需要注意的是,这次的序列是一个环,同样的偷盗策略,不能连着偷窃两家。这就意味着,偷了第一家的东西,就不能偷最后一家的东西。所以,可以将下面两者的值比较一下,取出最大值即可。

    (1)偷第一家,不偷最后一家;

    (2)从第二家开始偷,偷到最后一家为止。

    代码:

    class Solution {
    public:
        int rob(vector<int>& nums) {
            if(nums.size() <= 0)
                return 0;
            if(nums.size() == 1)
                return nums[0];
            if(nums.size() == 2)
                return max(nums[0], nums[1]);
            int size = nums.size();
            int left = subRob(nums, 0, size - 2);
            int right = subRob(nums, 1, size - 1);
            return max(left, right);
        }
        
        int subRob(vector<int>& nums, int start, int end) {
            int size = end - start + 1;
            vector<int> getMoney(size);
            getMoney[0] = nums[start];
            getMoney[1] = max(getMoney[0], 0 + nums[start + 1]);
            start += 2;
            for(int i = 2; i < size;i++)
            {
                getMoney[i] = max(getMoney[i - 1],getMoney[i - 2] + nums[start]);
                start++;
            }
            return getMoney[size - 1];
        }
        
        int max(int a, int b)
        {
            return a > b ? a : b;
        }
       
    };
    

      

  • 相关阅读:
    数据库 proc编程三
    数据库 Proc编程二
    数据库 Proc编程一
    数据库 Oracle数据库对象二
    Your local changes to the following files would be overwritten by merge: ... Please, commit your changes or stash them before you can merge
    生活感悟关键字
    科3
    NGINX 健康检查和负载均衡机制分析
    django模板里关闭特殊字符转换,在前端以html语法渲染
    django 获取前端获取render模板渲染后的html
  • 原文地址:https://www.cnblogs.com/CodingGirl121/p/5546417.html
Copyright © 2011-2022 走看看