ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

LeetCode0198.打家劫舍

2020-05-29 12:54:42  阅读:242  来源: 互联网

标签:nums int Max 最大值 Value LeetCode0198 偷到 打家劫舍


题目要求

 

 

 

算法分析

按照数组顺序偷,将每个房子累计可能偷到的最大值记录下来,

到第0个房子累计偷到的最大值Value[0] = nums[0]

到第1个房子累计偷到的最大值Value[1] = Max( Value[0],nums[1])

到第2个房子累计偷到的最大值Value[2] = Max( Value[1], Value[0]+nums[2])

到第3个房子累计偷到的最大值Value[3] = Max( Value[2], Value[1]+nums[3])

......

到第i个房子累计偷到的最大值Value[i] = Max( Value[i-1], Value[i-2]+nums[i])

 

Value数组可以不声明,因为Value[i-1],Value[i-2]的值可以用2个变量动态保存,减少空间复杂度

代码展示(C#)

public class Solution {
    public int Rob(int[] nums) {
        int n = nums.Length;
        if(n==0){return 0;}
        if(n==1){return nums[0];}

        int nonExcept = nums[0];
        int except = Math.Max(nums[1],nonExcept);
        for(int i = 2; i < n; i++){
            int temp = except;
            except = Math.Max(except,nonExcept+nums[i]);
            nonExcept = temp;
        }
        return except;
    }
}

 

提交结果

 

标签:nums,int,Max,最大值,Value,LeetCode0198,偷到,打家劫舍
来源: https://www.cnblogs.com/KingR/p/12986854.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有