滑动窗口与动态规划:解决无重复子串与股票收益问题
1. 算法实战无重复字符的最长子串与含冷却期的股票最大收益在算法面试和编程竞赛中字符串处理和动态规划是两类经典问题。今天我想分享两个看似不同但都考验思维模式的题目解法找出字符串中最长无重复字符的子串Longest Substring Without Repeating Characters以及带有卖出冷却期的股票买卖最大收益问题Maximum Profit with Cooldown。这两个问题分别来自LeetCode的第3题和第309题在实际面试中出现频率极高。第一个问题考察滑动窗口技巧的应用需要在线性时间内完成字符串扫描第二个问题则需要设计包含状态转移的动态规划方案考虑交易规则的约束条件。虽然领域不同但都体现了算法设计中如何高效处理约束条件的核心思想。下面我会结合代码示例和状态转移图拆解这两个问题的解决思路和优化技巧。2. 无重复字符的最长子串解析2.1 问题定义与暴力解法给定一个字符串s要求找出其中不含有重复字符的最长子串的长度。例如abcabcbb的最长无重复子串是abc长度为3。最直观的暴力解法是检查所有可能的子串def lengthOfLongestSubstring(s): max_len 0 for i in range(len(s)): seen set() for j in range(i, len(s)): if s[j] in seen: break seen.add(s[j]) max_len max(max_len, len(seen)) return max_len这种方法时间复杂度为O(n²)当字符串较长时性能堪忧。2.2 滑动窗口优化方案更高效的方案是使用滑动窗口配合哈希表记录字符位置def lengthOfLongestSubstring(s): char_index {} left max_len 0 for right, char in enumerate(s): if char in char_index and char_index[char] left: left char_index[char] 1 char_index[char] right max_len max(max_len, right - left 1) return max_len这个算法的时间复杂度优化到O(n)空间复杂度O(min(m,n))其中m是字符集大小。关键技巧当发现重复字符时直接将窗口左边界跳到该字符上次出现位置的下一位避免不必要的重复检查。2.3 边界条件与测试用例需要特别注意的边界情况包括空字符串输入() → 应返回0全相同字符(aaaaa) → 应返回1无重复字符(abcdef) → 应返回字符串长度混合情况(pwwkew) → 最长子串wke返回33. 含冷却期的股票买卖问题3.1 问题建模给定一个股票价格数组prices其中prices[i]表示第i天的股票价格。设计算法计算最大利润交易规则为可以完成任意次交易卖出股票后需要等待一天才能再次买入冷却期不能同时进行多笔交易必须卖出当前持有股票后才能再买入示例prices [1,2,3,0,2] 最大利润为3对应交易序列买入1卖出2利润1冷却买入0卖出2利润23.2 动态规划状态设计定义三个状态hold[i]第i天结束时持有股票的最大利润sold[i]第i天结束时不持有股票且处于冷却期的最大利润rest[i]第i天结束时不持有股票且不处于冷却期的最大利润状态转移方程hold[i] max(hold[i-1], rest[i-1] - prices[i]) sold[i] hold[i-1] prices[i] rest[i] max(rest[i-1], sold[i-1])最终结果为max(sold[n-1], rest[n-1])3.3 Python实现与空间优化def maxProfit(prices): if not prices: return 0 hold -prices[0] sold 0 rest 0 for i in range(1, len(prices)): prev_hold hold hold max(hold, rest - prices[i]) rest max(rest, sold) sold prev_hold prices[i] return max(sold, rest)通过变量复用将空间复杂度从O(n)优化到O(1)。4. 算法对比与经验总结4.1 解题模式差异滑动窗口适用于子串/子数组类问题通过维护窗口边界来避免重复计算状态机DP适用于带约束条件的序列决策问题通过明确定义状态来理清转移逻辑4.2 常见错误排查对于无重复子串问题忘记更新字符最后出现位置窗口左边界移动时未考虑历史位置对于股票问题混淆hold和rest状态的转移条件初始化时未正确处理base case冷却期状态转移遗漏前一天卖出操作4.3 性能优化技巧滑动窗口问题可以先用暴力解法验证逻辑正确性动态规划问题建议先画出状态转移图对于空间敏感的场景观察是否只需要前一个状态使用断言(assert)验证边界条件在实际面试中建议先明确问题约束条件再选择合适的数据结构和算法范式。这两个问题虽然领域不同但都体现了算法设计中对问题约束条件的建模能力。

相关新闻

Windows系统学习路线与核心技术解析

Windows系统学习路线与核心技术解析

1. Windows系统学习路线规划 作为从Windows 95时代一路走来的老用户,我见证了Windows系统二十多年的演进历程。对于想要系统学习Windows的朋友,建议从以下几个阶段循序渐进: 1.1 基础操作与系统管理 先掌握Windows的基础操作逻辑&#xff0…

2026/8/11 5:52:58 阅读更多 →
Unity多层动画状态机:构建可扩展角色移动系统的工程实践

Unity多层动画状态机:构建可扩展角色移动系统的工程实践

1. 项目概述:为什么需要多层动画状态机?在Unity里做角色移动,新手最容易掉进的坑就是试图用一个Animator Controller搞定所有事情。我见过太多项目,一个状态机里塞满了Idle、Walk、Run、Jump、Attack、Death等几十个状态&#xff…

2026/8/11 5:52:58 阅读更多 →
AI NPC:别让演示效果骗了你

AI NPC:别让演示效果骗了你

AI NPC:别让演示效果骗了你 一段 NPC 演示能顺利完成对话,不等于它在游戏里可以交付。演示往往只有一名玩家、固定路线和完整网络;上线后还会遇到任务状态过期、寻路失败、服务超时和玩家反复触发同一交互。 把语言模型接进 NPC 时&#xff0…

2026/8/11 5:51:58 阅读更多 →

最新新闻

重塑数码摄影质感:t3mujinpack胶片模拟预设包为Darktable注入经典胶片魅力

重塑数码摄影质感:t3mujinpack胶片模拟预设包为Darktable注入经典胶片魅力

重塑数码摄影质感:t3mujinpack胶片模拟预设包为Darktable注入经典胶片魅力 【免费下载链接】t3mujinpack Collection of film emulation presets for open-source RAW developer software Darktable. 项目地址: https://gitcode.com/gh_mirrors/t3/t3mujinpack …

2026/8/11 13:35:06 阅读更多 →
Legacy Update:让经典Windows系统重获现代网络访问能力的终极方案

Legacy Update:让经典Windows系统重获现代网络访问能力的终极方案

Legacy Update:让经典Windows系统重获现代网络访问能力的终极方案 【免费下载链接】LegacyUpdate Get back online, activate, and install updates on your legacy Windows PC 项目地址: https://gitcode.com/gh_mirrors/le/LegacyUpdate 你是否还在使用Win…

2026/8/11 13:35:06 阅读更多 →
Java单例模式防御反射攻击的5种实战方案

Java单例模式防御反射攻击的5种实战方案

1. 单例模式的脆弱性:当反射遇上设计模式单例模式作为最常用的设计模式之一,其核心价值在于确保一个类在任何情况下都只存在一个实例。但很多开发者可能不知道,这个看似坚固的设计堡垒,在Java反射机制面前竟如此不堪一击。我在实际…

2026/8/11 13:35:06 阅读更多 →
15分钟搞定完美黑苹果:OpCore-Simplify图形化工具全攻略

15分钟搞定完美黑苹果:OpCore-Simplify图形化工具全攻略

15分钟搞定完美黑苹果:OpCore-Simplify图形化工具全攻略 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 还在为复杂的黑苹果配置而烦恼吗&…

2026/8/11 13:35:06 阅读更多 →
XBase软件框架使用说明(3)

XBase软件框架使用说明(3)

通讯通道配置 type:通道类型,1-TCP客户端;2-TCP服务端;3-UDP点对点;4-UDP组播;5-UDP广播;6-串口通讯; id:通道标志; protocolKey:通讯协议key值,与协议配置中的protocolK…

2026/8/11 13:35:06 阅读更多 →
排列问题解析:从回溯算法到工程实践

排列问题解析:从回溯算法到工程实践

1. 排列问题概述与基础概念 排列问题是计算机科学和数学中的经典课题,也是算法竞赛和面试中的高频考点。简单来说,排列问题就是研究如何将一组元素按照特定顺序进行排列组合。比如我们有数字1、2、3,它们的全排列就是[1,2,3]、[1,3,2]、[2,1,…

2026/8/11 13:34:05 阅读更多 →

日新闻

如何用Video2X实现专业级视频画质提升:AI视频增强完整指南

如何用Video2X实现专业级视频画质提升:AI视频增强完整指南

如何用Video2X实现专业级视频画质提升:AI视频增强完整指南 【免费下载链接】video2x A machine learning-based video super resolution and frame interpolation framework. Est. Hack the Valley II, 2018. 项目地址: https://gitcode.com/GitHub_Trending/vi/v…

2026/8/11 0:00:02 阅读更多 →
前后端分离项目中控制台与接口工具数据差异排查指南

前后端分离项目中控制台与接口工具数据差异排查指南

1. 问题现象解析:控制台与Apifox的数据差异 最近在调试一个前后端分离项目时,遇到了一个典型问题:后端服务在本地开发环境控制台能正常输出查询数据,但通过Apifox测试时却返回空结果。这种"控制台有数据,接口工具…

2026/8/11 0:00:03 阅读更多 →
AI编程实战:从Claude Code踩坑到游戏开发入门

AI编程实战:从Claude Code踩坑到游戏开发入门

1. 从“AI能帮我做游戏”到“AI让我重新学编程”最近身边不少朋友,尤其是一些非技术背景、但对游戏开发有浓厚兴趣的朋友,都在问我同一个问题:“听说现在用Claude Code这种AI编程工具,小白也能做游戏了,是真的吗&#…

2026/8/11 0:00:03 阅读更多 →

周新闻

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁 【免费下载链接】baidupankey 在线查询网盘提取码(维护中 rm repo) 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 你是否曾经在深夜寻找一份重要资料&#x…

2026/8/11 1:08:05 阅读更多 →
如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南 【免费下载链接】chinese_license_plate_generator 中国车牌生成器 项目地址: https://gitcode.com/gh_mirrors/ch/chinese_license_plate_generator 中国车牌生成器是一个基于Python的开源项目&#xff0c…

2026/8/11 1:08:05 阅读更多 →
收藏!小白程序员轻松入门大模型,从Harness工程开始实践

收藏!小白程序员轻松入门大模型,从Harness工程开始实践

文章强调学习大模型不应只关注模型本身,而应重视模型外的系统搭建,即Harness。提出AgentModelHarness的实用公式,详细介绍Harness的四个层次:持久化层、执行层、控制层和观察与验证层。文章还探讨了上下文工程、工具设计、AGENTS.…

2026/8/11 1:08:05 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/10 17:07:33 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/11 1:08:06 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/10 17:07:33 阅读更多 →