zoukankan      html  css  js  c++  java
  • leetcode刷题笔记 一百九十八题 打家劫舍

    leetcode刷题笔记 一百九十八题 打家劫舍

    源地址:198. 打家劫舍

    问题描述:

    你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。

    给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。

    示例 1:

    输入:[1,2,3,1]
    输出:4
    解释:偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。
    偷窃到的最高金额 = 1 + 3 = 4 。
    示例 2:

    输入:[2,7,9,3,1]
    输出:12
    解释:偷窃 1 号房屋 (金额 = 2), 偷窃 3 号房屋 (金额 = 9),接着偷窃 5 号房屋 (金额 = 1)。
    偷窃到的最高金额 = 2 + 9 + 1 = 12 。

    提示:

    0 <= nums.length <= 100
    0 <= nums[i] <= 400

    //基于动态规划思想与滚动数组思想
    //dp(i) = math.max(dp(i-1), dp(i-2)+nums(i))
    object Solution {
        def rob(nums: Array[Int]): Int = {
            val length = nums.length
            if (length == 0) return 0
            if (length == 1) return nums(0)
    
            var first = nums(0)
            var second = Math.max(nums(0), nums(1))
    
            for (i <- 2 to length-1){
                val temp = second
                second = Math.max(nums(i)+first, second)
                first = temp 
            }
            return second
        }
    }
    
  • 相关阅读:
    Struts2项目问题及解决方式
    CSS样式编写案例
    第二个项目总结
    CSS布局中的问题解决方式
    CSS3中的Flexbox弹性布局(二)
    CSS3中的Flexbox弹性布局(一)
    python----递归函数
    python----函数进阶
    python----函数
    python----装饰器
  • 原文地址:https://www.cnblogs.com/ganshuoos/p/13696058.html
Copyright © 2011-2022 走看看