深圳外贸建站模板手工外包加工网可信吗

张小明 2026/1/11 9:39:55
深圳外贸建站模板,手工外包加工网可信吗,网站解析后显示建设中,网站建设与管理案例教程第三版课后答案目录 方法 1#xff1a;朴素回溯#xff08;暴力递归#xff09; 思路 Java 实现 时空复杂度 问题 方法 2#xff1a;记忆化搜索#xff08;自顶向下 DP#xff09; 思路 Java 实现 时空复杂度 优化点 方法 3#xff1a;自底向上的动态规划#xff08;DP 数组…目录方法 1朴素回溯暴力递归思路Java 实现时空复杂度问题方法 2记忆化搜索自顶向下 DP思路Java 实现时空复杂度优化点方法 3自底向上的动态规划DP 数组思路Java 实现时空复杂度优化点方法 4空间优化的动态规划双变量思路Java 实现时空复杂度优化点优化变迁总结打家劫舍问题的核心是 “相邻房屋不能同时偷”我们从暴力回溯开始逐步优化到空间最优的动态规划下面分步骤解析方法 1朴素回溯暴力递归思路通过递归枚举每个房屋的两种选择偷当前房屋则只能偷前 i-2 个房屋的最大金额 当前金额、不偷当前房屋则偷前 i-1 个房屋的最大金额。状态定义dfs(i)表示 “考虑前 i 个房屋时的最大偷窃金额”。Java 实现class Solution { public int rob(int[] nums) { return dfs(nums, nums.length - 1); } // 递归计算前i个房屋的最大金额 private int dfs(int[] nums, int i) { if (i 0) return 0; // 边界没有房屋时金额为0 // 选择1不偷i取前i-1的最大选择2偷i取前i-2的最大当前金额 return Math.max(dfs(nums, i - 1), dfs(nums, i - 2) nums[i]); } }时空复杂度时间复杂度O(2n)每个房屋分 2 种选择递归树深度为 n总节点数是2n级空间复杂度O(n)递归栈的深度为 n问题存在大量重复计算例如计算dfs(5)需要dfs(4)和dfs(3)计算dfs(4)又需要dfs(3)和dfs(2)dfs(3)会被多次计算效率极低n≥20 时就会超时。方法 2记忆化搜索自顶向下 DP思路用 ** 备忘录数组** 存储已经计算过的dfs(i)结果避免重复计算 —— 每次计算前先检查备忘录若已存在结果则直接返回否则计算后存入备忘录。Java 实现import java.util.Arrays; class Solution { private int[] memo; // 备忘录存储每个i对应的最大金额 public int rob(int[] nums) { int n nums.length; memo new int[n]; Arrays.fill(memo, -1); // 初始化-1表示该位置未计算金额非负不会和有效结果冲突 return dfs(nums, n - 1); } private int dfs(int[] nums, int i) { if (i 0) return 0; if (memo[i] ! -1) return memo[i]; // 已计算直接返回 // 计算并存入备忘录 int res Math.max(dfs(nums, i - 1), dfs(nums, i - 2) nums[i]); memo[i] res; return res; } }时空复杂度时间复杂度O(n)每个 i 只计算 1 次空间复杂度O(n)备忘录数组 递归栈优化点解决了 “重复计算” 的问题将时间复杂度从指数级降到线性但仍依赖递归栈。方法 3自底向上的动态规划DP 数组思路把 “自顶向下的递归” 改成 “自底向上的迭代”用DP 数组存储每个位置的最大金额彻底避免递归栈。状态定义dp[i]表示 “前 i 个房屋的最大偷窃金额”。状态转移不偷第 i 个房屋dp[i] dp[i-1]偷第 i 个房屋dp[i] dp[i-2] nums[i-1]nums 索引比 dp 小 1因为 dp [0] 对应 “0 个房屋”Java 实现class Solution { public int rob(int[] nums) { int n nums.length; if (n 0) return 0; // dp[i]前i个房屋的最大金额i从0到n int[] dp new int[n 1]; dp[0] 0; // 0个房屋金额0 dp[1] nums[0]; // 1个房屋金额为nums[0] // 从第2个房屋开始迭代 for (int i 2; i n; i) { dp[i] Math.max(dp[i - 1], dp[i - 2] nums[i - 1]); } return dp[n]; } }时空复杂度时间复杂度O(n)仅需遍历 1 次空间复杂度O(n)DP 数组占用 n1 空间优化点用迭代替代递归避免了递归栈溢出的风险但空间仍依赖数组。方法 4空间优化的动态规划双变量思路观察状态转移dp[i]只依赖dp[i-1]和dp[i-2]因此不需要整个 DP 数组只需用两个变量分别存储这两个依赖值即可。Java 实现class Solution { public int rob(int[] nums) { int f0 0; // 对应dp[i-2]前i-2个房屋的最大金额 int f1 0; // 对应dp[i-1]前i-1个房屋的最大金额 for (int x : nums) { int newF Math.max(f1, f0 x); // 计算当前房屋的最大金额 f0 f1; // 更新f0为原来的f1i-1 → i-2 f1 newF; // 更新f1为当前的newFi → i-1 } return f1; } }时空复杂度时间复杂度O(n)遍历 1 次空间复杂度O(1)仅用 2 个变量优化点将空间复杂度从O(n)降到O(1)是该问题的最优空间方案。优化变迁总结朴素回溯O(2^n)时间 ↓ 解决重复计算 记忆化搜索O(n)时间O(n)空间 ↓ 去掉递归栈改为迭代 自底向上DP数组O(n)时间O(n)空间 ↓ 去掉冗余数组用双变量替代 空间优化DPO(n)时间O(1)空间
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

wordpress 优化数据库石家庄seo外包公司

敏捷软件开发:从阶段视角的全面解析 1. 敏捷开发阶段概述 许多人从阶段视角学习软件开发,按顺序执行各个阶段,常见阶段包括分析、需求、设计、开发、测试和交付。敏捷软件开发并非按顺序进行,但可以以串行方式建模,以便更轻松地设想过程。 以下是各阶段的简要概述,各阶…

张小明 2026/1/8 16:13:25 网站建设

龙岗-网站建设深圳信科网站百度快照怎么做

MLX模型转换实战:从PyTorch到Apple芯片的性能飞跃 【免费下载链接】mlx-examples 在 MLX 框架中的示例。 项目地址: https://gitcode.com/GitHub_Trending/ml/mlx-examples 你是否曾经在Apple芯片上运行PyTorch模型时感到性能瓶颈?或者面对模型转…

张小明 2026/1/9 1:32:42 网站建设

广州专门做网站个人网站推广

Oracle数据库相关技术与操作指南 1. 数据库基础概念与组件 数据库在现代信息技术中扮演着核心角色,涉及众多概念和组件。 - 数据库实例与文件 :数据库实例是数据库管理系统的一个运行实例,包含内存结构和后台进程。数据库文件则是存储数据的物理文件,如控制文件、数据…

张小明 2026/1/7 18:35:35 网站建设

芜湖建设网站湄洲岛网站建设

背景与问题 在暴雪等恶劣天气条件下,自动驾驶系统的视觉感知能力显著下降。雪花的快速移动和密集遮挡会在摄像头图像中形成高亮点、拖影或随机噪声,使道路、车辆及行人信息受损。 传统单帧图像去雪方法仅依赖空间特征,容易产生伪影&#xf…

张小明 2026/1/2 14:15:19 网站建设

佛山中小企业网站制作wordpress增加logo

博主介绍 💗博主介绍:✌全栈领域优质创作者,专注于Java、小程序、Python技术领域和计算机毕业项目实战✌💗 👇🏻 精彩专栏 推荐订阅👇🏻 2025-2026年最新1000个热门Java毕业设计选题…

张小明 2026/1/10 6:48:18 网站建设

网站建设属于软件开发学生网站建设总结报告

LangFlow GitHub星标破万背后的原因分析 在大语言模型(LLM)席卷技术圈的今天,几乎每个开发者都曾尝试过用 ChatGPT 或本地部署的 Llama 系列模型构建自己的“智能助手”。但真正动手时才发现:从调用 API、设计提示词,…

张小明 2026/1/6 6:13:58 网站建设