代码随想录算法训练营第二十五天| 455.分发饼干、376. 摆动序列、53. 最大子序和
455.分发饼干目标g[i]第i个孩子的胃口值至少要这么大的饼干才满足s[j]第j块饼干的尺寸每个孩子最多一块饼干、每块饼干最多给一个孩子。问最多能满足多少孩子。核心思路贪心 排序 双指针策略用最小的饼干去满足胃口最小的孩子能满足就给不满足就换更大的饼干。步骤g、s都排序两个指针i指向当前孩子从小胃口开始j指向当前饼干从小尺寸开始如果s[j] g[i]满足一个孩子i 1, j 1否则饼干太小只能换更大的饼干j 1代码classSolution:deffindContentChildren(self,g:List[int],s:List[int])-int:# 让“最小胃口”优先配“最小能满足它的饼干”g.sort()s.sort()i0# 孩子指针当前要满足的孩子j0# 饼干指针当前可用的最小饼干count0whileilen(g)andjlen(s):# 当前饼干能满足当前孩子成功分配ifg[i]s[j]:i1j1count1else:# 饼干太小无法满足任何“更大胃口”的孩子# 只能丢掉这块饼干换下一块更大的j1returncount只要“孩子还没分完”并且“饼干还没用完”分配就有意义。少一个都不行。所以必须是whileilen(g)andjlen(s):项目复杂度说明时间复杂度O(n log n m log m)两次排序nlen(g),mlen(s) 一次双指针扫描空间复杂度O(1)不算排序只用常数变量若语言排序用额外空间则取决于实现376. 摆动序列目标给你一个整数数组nums找一个最长子序列满足相邻差值正负交替nums[1,7,4,9,2,5]diff[6,-3,5,-7,3]✅ 全程交替 答案6子序列不要求连续可以跳着选 返回这个最长长度。核心思路贪心我们只关心“方向有没有变”不关心数值具体多大。只要方向变了就一定能多摆一下。我们同时维护两种“结尾状态”状态意味着什么up当前这条序列最后一步是上升down当前这条序列最后一步是下降我们在贪尽可能多地制造“方向切换”只在方向发生改变的时候更新如果今天比昨天高 说明出现“上升” 那我可以接在“下降”后面 → up down 1 如果今天比昨天低 说明出现“下降” 那我可以接在“上升”后面 → down up 1⚠️ 如果相等没有方向对摆动没帮助直接忽略代码classSolution:defwiggleMaxLength(self,nums:List[int])-int:# 边界情况0 或 1 个数iflen(nums)2:returnlen(nums)# up: 以“上升”结尾的最长摆动子序列长度# down: 以“下降”结尾的最长摆动子序列长度updown1foriinrange(1,len(nums)):ifnums[i]nums[i-1]:# 当前是上升 → 可以接在“下降”后面updown1elifnums[i]nums[i-1]:# 当前是下降 → 可以接在“上升”后面downup1else:# 相等则忽略不会形成摆动continuereturnmax(up,down)项目复杂度说明时间复杂度O(n)一次遍历空间复杂度O(1)只用两个变量53. 最大子序和目标给你一个整数数组nums找一个连续子数组必须连续使它的和最大返回这个最大和。nums[-2,1,-3,4,-1,2,1,-5,4]最大子数组[4,-1,2,1]答案6核心思路Kadane要么把当前数接在“之前的好子数组”后面要么从当前数重新开始。一段连续子数组只要“前面已经亏钱了”后面不管赚多少都不该带着它为什么这是“贪心且不会后悔”因为有一个铁律任何负的前缀都只会拖后腿不可能让后面的子数组变得更大。所以丢掉负前缀 永远正确不存在“先忍着亏后面赚更多”的情况现在数组里的每个数可以想成正数赚钱负数亏钱你要找一段连续时间里赚得最多。关键问题只有一个当前这一刻我是继续之前的这段“投资”还是重新开一个新的情况 1之前是正的之前赚了5现在来一个3 当然要接上总收益 8更大情况 2之前是负的之前亏了-5现在来一个3 立刻丢掉之前的只要 3 比 -2 好所以我们维护两个量就够了cur_sum以当前位置结尾的最大子数组和max_sum目前为止见过的全局最大子数组和代码classSolution:defmaxSubArray(self,nums:List[int])-int:# cur_sum以当前元素结尾的最大子数组和cur_sumnums[0]# max_sum目前为止见过的最大子数组和max_sumnums[0]foriinrange(1,len(nums)):# 核心贪心要不要之前那段# 如果之前是负的直接丢掉从 nums[i] 重新开始cur_summax(nums[i],cur_sumnums[i])# 更新全局最大值max_summax(max_sum,cur_sum)returnmax_sum项目复杂度说明时间复杂度O(n)一次遍历空间复杂度O(1)只用常数变量

相关新闻

发票红章盖住金额怎么办

发票红章盖住金额怎么办

财务人员在日常工作中,常常遇到一个让人头疼的问题:发票上的红色印章不小心盖到了金额区域,导致关键数字被遮挡。这种情况到底能不能用?又该如何处理?本文将从实务操作和技术解决方案两个角度,帮你彻底搞定…

2026/7/6 7:28:46 阅读更多 →
非标准格式票据怎么录入

非标准格式票据怎么录入

财务人员最头疼的事情之一,莫过于面对一堆格式各异的票据——海外发票、手写单据、各种非标准版式的凭证,传统手工录入不仅耗时费力,还极易出错。随着AI多模态技术的成熟,合合信息推出的TextIn票据识别工具正在改变这一困境&#…

2026/7/3 14:53:12 阅读更多 →
用 ESP32-C3 直接连 Starlink 路由器/热点并完成配网

用 ESP32-C3 直接连 Starlink 路由器/热点并完成配网

我们这边没有做过“用 ESP32-C3 直接连 Starlink 路由器/热点并完成配网”的专项实物测试,所以不能给你一个“我们已验证没问题/一定可以”的结论。但从协议和已知限制来看:ESP32-C3 作为 2.4GHz Wi-Fi STA 连接 Starlink 的热点本身通常是可行的&#x…

2026/7/2 20:08:21 阅读更多 →

最新新闻

分析报告】量身定制:基于大数据的行业痛点与蓝海机遇挖掘

分析报告】量身定制:基于大数据的行业痛点与蓝海机遇挖掘

【分析报告】量身定制:基于大数据的行业痛点与蓝海机遇挖掘 深夜,你盯着电脑屏幕上密密麻麻的行业数据,从国家统计局到各大咨询公司的白皮书,资料下载了十几个G,PPT做了几十页,但老板那句“所以&#xff0…

2026/7/6 17:27:07 阅读更多 →
ReVanced Integrations 完全指南:掌握 YouTube 增强插件的核心组件库

ReVanced Integrations 完全指南:掌握 YouTube 增强插件的核心组件库

ReVanced Integrations 完全指南:掌握 YouTube 增强插件的核心组件库 【免费下载链接】revanced-integrations 🔩 ReVanced Integrations containing classes to be merged by ReVanced Patcher 项目地址: https://gitcode.com/gh_mirrors/re/revanced…

2026/7/6 17:27:07 阅读更多 →
Redis-Lua在Web开发中的应用:构建高性能Lua后端服务的实战案例

Redis-Lua在Web开发中的应用:构建高性能Lua后端服务的实战案例

Redis-Lua在Web开发中的应用:构建高性能Lua后端服务的实战案例 【免费下载链接】redis-lua A Lua client library for the redis key value storage system. 项目地址: https://gitcode.com/gh_mirrors/re/redis-lua Redis-Lua是一个纯Lua编写的Redis客户端库…

2026/7/6 17:24:58 阅读更多 →
如何快速集成SourceEditor到你的iOS应用:从安装到基础使用的完整指南

如何快速集成SourceEditor到你的iOS应用:从安装到基础使用的完整指南

如何快速集成SourceEditor到你的iOS应用:从安装到基础使用的完整指南 【免费下载链接】source-editor A native source editor for iOS and macOS, written in Swift 项目地址: https://gitcode.com/gh_mirrors/so/source-editor SourceEditor是一个专为iOS和…

2026/7/6 17:24:57 阅读更多 →
5个关键问题:为什么Python开发者需要Neomodel来高效操作Neo4j图数据库

5个关键问题:为什么Python开发者需要Neomodel来高效操作Neo4j图数据库

5个关键问题:为什么Python开发者需要Neomodel来高效操作Neo4j图数据库 【免费下载链接】neomodel An Object Graph Mapper (OGM) for the Neo4j graph database. 项目地址: https://gitcode.com/gh_mirrors/ne/neomodel Neomodel是Neo4j图数据库的官方推荐Py…

2026/7/6 17:22:56 阅读更多 →
终极指南:如何用Ice彻底掌控你的macOS菜单栏

终极指南:如何用Ice彻底掌控你的macOS菜单栏

终极指南:如何用Ice彻底掌控你的macOS菜单栏 【免费下载链接】Ice Powerful menu bar manager for macOS 项目地址: https://gitcode.com/GitHub_Trending/ice/Ice 你是否曾为macOS菜单栏上拥挤不堪的图标感到烦恼?菜单栏图标越来越多&#xff0c…

2026/7/6 17:20:55 阅读更多 →

日新闻

H2 与 MySQL 单元测试兼容性:5 个关键 SQL 语句差异与规避方案

H2 与 MySQL 单元测试兼容性:5 个关键 SQL 语句差异与规避方案

H2与MySQL单元测试兼容性:5个关键SQL语句差异与规避方案1. 单元测试中的数据库兼容性挑战在Java开发领域,单元测试是保证代码质量的重要环节。当应用涉及数据库操作时,测试环境的搭建往往成为开发者的痛点。H2数据库因其轻量级、内存模式和快…

2026/7/6 0:01:17 阅读更多 →
Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘

Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘

Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘 【免费下载链接】rbtray A fork of RBTray from http://sourceforge.net/p/rbtray/code/. 项目地址: https://gitcode.com/gh_mirrors/rb/rbtray 你是否厌倦了Windows任务栏上密密麻麻的图标&…

2026/7/6 0:01:17 阅读更多 →
Visual C++ 运行时库一键安装终极指南:告别DLL缺失烦恼

Visual C++ 运行时库一键安装终极指南:告别DLL缺失烦恼

Visual C 运行时库一键安装终极指南:告别DLL缺失烦恼 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 你是否曾经遇到过这样的情况:下载了…

2026/7/6 0:05:19 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/6 8:11:50 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/6 8:11:52 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/6 6:52:56 阅读更多 →

月新闻