动态规划part07

ops/2024/9/22 18:03:44/

LC 198.打家劫舍

关键:dp[i]的含义是考虑下标i及之前,能偷的最多的钱是多少,那么对于下标i 有 两种情况,偷或不偷 , 这又依赖于前一个房间,和前前个房间是否被偷。若偷 i , 那么dp[i] = dp[i-2] + nums[i] ;若不偷i , dp 应保持为dp[i-1] , dp[i]取两者中的最大值。

class Solution:def rob(self, nums: List[int]) -> int:if len(nums) == 1: return nums[0]n = len(nums)dp = [0] * n dp[0] = nums[0]dp[1] = max(nums[0] , nums[1])for i in range( 2 , len(nums)):dp[i] = max(dp[i-2] + nums[i] , dp[i-1])return dp[n-1]

JAVA版:

class Solution {public int rob(int[] nums) {if(nums.length == 1){ return nums[0];}if(nums.length == 0){ return 0;}int[] dp = new int[nums.length];dp[0] = nums[0];dp[1] = Math.max(nums[1] , nums[0]);for(int i = 2 ; i < nums.length ; i ++){dp[i] = Math.max(dp[i-2] + nums[i] , dp[i-1]);}return dp[nums.length - 1];}
}

LC 213.打家劫舍II

由于房间首尾是相连的,我们需要分三种情况考虑:

1.先不看首尾,考虑中间(考虑不包含首尾)

2.考虑包含首元素,不包含尾元素

3.考虑包含尾元素,不包含首元素

去这三种情况的最大值即可

tips:计算情况2和情况3的时候,实际上就包含了情况1,因此略去这个情况

class Solution:def rob(self, nums: List[int]) -> int:if len(nums) == 0:return 0if len(nums) == 1:return nums[0]result1 = self.robRange(nums, 0, len(nums) - 2)  result2 = self.robRange(nums, 1, len(nums) - 1)  return max(result1, result2)def robRange(self, nums: List[int], start: int, end: int) -> int:if end == start:return nums[start]prev_max = nums[start]curr_max = max(nums[start], nums[start + 1])for i in range(start + 2, end + 1):temp = curr_maxcurr_max = max(prev_max + nums[i], curr_max)prev_max = tempreturn curr_max


http://www.ppmy.cn/ops/114359.html

相关文章

【rust】rust条件编译

在c语言中&#xff0c;条件编译是一个非常好用的功能&#xff0c;那么rust中如何实现条件编译呢? rust的条件编译需要两个部分&#xff0c;一个是fratures&#xff0c;另一个是cfg。Cargo feature是一个非常强大的功能&#xff0c;可以提供条件编译和可选依赖项的高级特性&…

QT事件过滤器(1)

在 Qt 中&#xff0c;事件过滤是一种用于 拦截和处理对象事件 的机制。它允许一个对象监听和处理另一个对象的事件&#xff0c;比如键盘输入、鼠标点击等&#xff0c;而不必修改对象本身的代码。通过事件过滤&#xff0c;可以拦截并阻止事件的进一步传播。 事件机制概述 Qt 中…

pytorch实现RNN网络

目录 1.导包 2. 加载本地文本数据 3.构建循环神经网络层 4.初始化隐藏状态state 5.创建随机的数据&#xff0c;检测一下代码是否能正常运行 6. 构建一个完整的循环神经网络 7.模型训练 8.个人知识点理解 1.导包 import torch from torch import nn from torch.nn imp…

Spring Boot-热部署问题

Spring Boot 热部署问题分析与解决方案 热部署&#xff08;Hot Deployment&#xff09;是指在应用程序运行过程中&#xff0c;无需停止应用就可以动态加载新代码、配置或资源&#xff0c;从而提升开发效率。在 Spring Boot 开发中&#xff0c;热部署是一项非常实用的功能&…

创建一个带有 F6 快捷键的自动点击器

创建一个带有 F6 快捷键的自动点击器 在许多情况下&#xff0c;自动化点击任务可以帮助我们节省大量时间和精力。本文将介绍如何使用 Python 和 Tkinter 创建一个简单的自动点击器&#xff0c;并通过 F6 键作为快捷键来控制点击器的开始和停止&#xff0c;即使应用程序在后台也…

P9235 [蓝桥杯 2023 省 A] 网络稳定性

*原题链接* 最小瓶颈生成树题&#xff0c;和货车运输完全一样。 先简化题意&#xff0c; 次询问&#xff0c;每次给出 &#xff0c;问 到 的所有路径集合中&#xff0c;最小边权的最大值。 对于这种题可以用kruskal生成树来做&#xff0c;也可以用倍增来写&#xff0c;但不…

JSON.parseArray 内存溢出

实际上我的JSON如下&#xff1a; 如果用以下代码&#xff1a;JVM的内存直接飙到内存溢出&#xff0c;报错OutOfMemoryError: Java heap space Object oo JSON.parseArray(json, TestVo.class) 如果我换成了这样&#xff0c;就没事&#xff1a; Object oo JSON.parseObject(…

MISC - 第一天(stegsolve图片隐写解析器、QR research、binwalk,dd文件分离,十六进制文件编辑器)

前言 各位师傅大家好&#xff0c;我是qmx_07&#xff0c;最近更新Buuctf在线测评中的MISC杂项内容 介绍 BUUCTF:https://buuoj.cn/ &#xff0c;整合了各大 CTF 赛事题目&#xff0c;类型丰富&#xff0c;涵盖了Web 安全、密码学、系统安全、逆向工程、代码审计等多个领域 …