zoukankan      html  css  js  c++  java
  • 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;
        }
    }

    提交结果

  • 相关阅读:
    WebService
    JavaMail
    ssh框架整合
    CSS3初步
    SpringMVC 文件上传及下载
    Java多线程
    SpringMVC 数据校验
    初始化参数绑定——日期格式
    SpringMVC入门
    Quartz
  • 原文地址:https://www.cnblogs.com/KingR/p/12986854.html
Copyright © 2011-2022 走看看