快站淘客网站博客自媒体轻松

news/2025/9/23 1:17:20/文章来源:
快站淘客,网站博客自媒体轻松,商城软件开发,营销型网站策划 pdf作者推荐 【贪心算法】【中位贪心】.执行操作使频率分数最大 涉及知识点 单调栈 动态规划 map 题目 给定一个整数数组 A#xff0c;你可以从某一起始索引出发#xff0c;跳跃一定次数。在你跳跃的过程中#xff0c;第 1、3、5… 次跳跃称为奇数跳跃#xff0c;而第 2、…作者推荐 【贪心算法】【中位贪心】.执行操作使频率分数最大 涉及知识点 单调栈 动态规划 map 题目 给定一个整数数组 A你可以从某一起始索引出发跳跃一定次数。在你跳跃的过程中第 1、3、5… 次跳跃称为奇数跳跃而第 2、4、6… 次跳跃称为偶数跳跃。 你可以按以下方式从索引 i 向后跳转到索引 j其中 i j 在进行奇数跳跃时如第 135… 次跳跃你将会跳到索引 j使得 A[i] A[j]A[j] 是可能的最小值。如果存在多个这样的索引 j你只能跳到满足要求的最小索引 j 上。 在进行偶数跳跃时如第 246… 次跳跃你将会跳到索引 j使得 A[i] A[j]A[j] 是可能的最大值。如果存在多个这样的索引 j你只能跳到满足要求的最小索引 j 上。 对于某些索引 i可能无法进行合乎要求的跳跃。 如果从某一索引开始跳跃一定次数可能是 0 次或多次就可以到达数组的末尾索引 A.length - 1那么该索引就会被认为是好的起始索引。 返回好的起始索引的数量。 示例 1 输入[10,13,12,14,15] 输出2 解释 从起始索引 i 0 出发我们可以跳到 i 2因为 A[2] 是 A[1]A[2]A[3]A[4] 中大于或等于 A[0] 的最小值然后我们就无法继续跳下去了。 从起始索引 i 1 和 i 2 出发我们可以跳到 i 3然后我们就无法继续跳下去了。 从起始索引 i 3 出发我们可以跳到 i 4到达数组末尾。 从起始索引 i 4 出发我们已经到达数组末尾。 总之我们可以从 2 个不同的起始索引i 3, i 4出发通过一定数量的跳跃到达数组末尾。 示例 2 输入[2,3,1,1,4] 输出3 解释 从起始索引 i0 出发我们依次可以跳到 i 1i 2i 3 在我们的第一次跳跃奇数中我们先跳到 i 1因为 A[1] 是A[1]A[2]A[3]A[4]中大于或等于 A[0] 的最小值。 在我们的第二次跳跃偶数中我们从 i 1 跳到 i 2因为 A[2] 是A[2]A[3]A[4]中小于或等于 A[1] 的最大值。A[3] 也是最大的值但 2 是一个较小的索引所以我们只能跳到 i 2而不能跳到 i 3。 在我们的第三次跳跃奇数中我们从 i 2 跳到 i 3因为 A[3] 是A[3]A[4]中大于或等于 A[2] 的最小值。 我们不能从 i 3 跳到 i 4所以起始索引 i 0 不是好的起始索引。 类似地我们可以推断 从起始索引 i 1 出发 我们跳到 i 4这样我们就到达数组末尾。 从起始索引 i 2 出发 我们跳到 i 3然后我们就不能再跳了。 从起始索引 i 3 出发 我们跳到 i 4这样我们就到达数组末尾。 从起始索引 i 4 出发我们已经到达数组末尾。 总之我们可以从 3 个不同的起始索引i 1, i 3, i 4出发通过一定数量的跳跃到达数组末尾。 示例 3 输入[5,1,3,4,2] 输出3 解释 我们可以从起始索引 124 出发到达数组末尾。 提示 1 A.length 20000 0 A[i] 100000 代码 单调栈 此方法比map巧妙性能差不多值得学习。时间复杂度O(nlogn)。 变量函数解析 indexs计算奇数跳时arr[index[i]] 升序且相等的元素相对顺序不变。计算偶数跳时arr[index[i]] 降序且相等的元素相对顺序不变。Next计算奇偶数跳的下一个位置如果无法跳则值为m_cvStatus记录偶数奇数跳能否跳到队尾。vStatus[0][m_c]和vStatus[0][m_c]为false避免处理边界条件 Next奇数跳为例 令jindex[jj],按jj从小到的顺序将j入栈由于arr[index[jj]]是升序所以规则一arr[栈中元素] arr[j]。 (sta.top() j 成立说明 规则二j在sta.top()右边。 规则三令index[jj2] 为sta.top(),arr[index(jj2,j)]中的数即大于等于arr[sta.top()] 同时小于等于arr[j]的数全部在sta.top()的左边否则出栈了。 结合规则一二三stat.top()的下一步就是j。 核心代码 class Solution { public:int oddEvenJumps(vectorint arr) {m_c arr.size();vectorint indexs(m_c);iota(indexs.begin(), indexs.end(), 0);sort(indexs.begin(), indexs.end(), [](const int i1, const int i2) {return (arr[i1] arr[i2]) || ((arr[i1] arr[i2]) (i1 i2)); });const auto v1 Next(indexs);sort(indexs.begin(), indexs.end(), [](const int i1, const int i2) {return (arr[i1] arr[i2]) || ((arr[i1] arr[i2]) (i1 i2)); });const auto v2 Next(indexs);vectorvectorbool vStatus(2, vectorbool(m_c1));int iRet 1;vStatus[0][m_c-1] true;vStatus[1][m_c - 1] true;for (int i m_c - 1 - 1; i 0; i--){vStatus[0][i] vStatus[1][v2[i]];//偶数跳vStatus[1][i] vStatus[0][v1[i]];//奇数跳iRet (int)vStatus[1][i];}return iRet;}vectorint Next(const vectorint indexs){vectorint vNext(indexs.size(), indexs.size());stackint sta;for (int j : indexs){while (sta.size() (sta.top() j)){vNext[sta.top()] j;sta.pop();}sta.emplace(j);}return vNext;}int m_c; };测试用例 templateclass T void Assert(const T t1, const T t2) {assert(t1 t2); }templateclass T void Assert(const vectorT v1, const vectorT v2) {if (v1.size() ! v2.size()){assert(false);return;}for (int i 0; i v1.size(); i){Assert(v1[i], v2[i]);} }int main() {vectorint arr;{Solution slu;arr { 10,13,12,14,15 };auto res slu.oddEvenJumps(arr);Assert(2, res);}{Solution slu;arr { 2,3,1,1,4 };auto res slu.oddEvenJumps(arr);Assert(3, res);}{Solution slu;arr { 5,1,3,4,2 };auto res slu.oddEvenJumps(arr);Assert(3, res);}//CConsole::Out(res); }2023年3月版map 利用map性能和单调栈差不多好理解。从后向前遍历各元素map的键对应arr[i]map的值对应i。如果arr[i]i小的后加入的覆盖前面的。 时间复杂度O(nlogn)。 map map可以分成有序(单调)map和无序(哈希)map。还可分成单键map和多键map允许重复的键。 class Solution {public:int oddEvenJumps(vectorint arr) {vectorvectorbool result;result.assign(arr.size(), vectorbool(2));result[arr.size() - 1][0] true;result[arr.size() - 1][1] true;std::mapint, int mValueIndex;mValueIndex[arr.back()] arr.size()-1;for (int i arr.size() - 2; i 0; i--){{//奇数跳跃auto it mValueIndex.lower_bound(arr[i]);if (mValueIndex.end() ! it){result[i][0] result[it-second][1];}}{//偶数跳跃auto it2 mValueIndex.upper_bound(arr[i]);if (mValueIndex.begin() ! it2){--it2;result[i][1] result[it2-second][0];}mValueIndex[arr[i]] i;}}int iNum 0;for (int i 0; i arr.size(); i){if (result[i][0]){iNum;}}return iNum;}};扩展阅读 视频课程 有效学习明确的目标 及时的反馈 拉伸区难度合适可以先学简单的课程请移步CSDN学院听白银讲师也就是鄙人的讲解。 https://edu.csdn.net/course/detail/38771 如何你想快 速形成战斗了为老板分忧请学习C#入职培训、C入职培训等课程 https://edu.csdn.net/lecturer/6176 相关下载 想高屋建瓴的学习算法请下载《喜缺全书算法册》doc版 https://download.csdn.net/download/he_zhidan/88348653 我想对大家说的话闻缺陷则喜是一个美好的愿望早发现问题早修改问题给老板节约钱。子墨子言之事无终始无务多业。也就是我们常说的专业的人做专业的事。如果程序是一条龙那算法就是他的是睛 测试环境 操作系统win7 开发环境 VS2019 C17 或者 操作系统win10 开发环境 VS2022 C17 如无特殊说明本算法用C 实现。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/910976.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

专业网站建设提供商北京商场购物中心排名

解读HTTP包:[摘要]详细介绍HTTP包的格式、协议内容及相关的处理方法,内容分3节:1、超文本传输协议及HTTP包;2、Socket类与ServerSocket类;3、读取HTTP包。 一、超文本传输协议及HTTP包 HTTP协议用于在Internet上发送和接收消息。HTTP协议是一…

如何做网站超链接网站建设方案如何写

文章说明: Linux内核版本:5.0 架构:ARM64 参考资料及图片来源:《奔跑吧Linux内核》 Linux 5.0内核源码注释仓库地址: zhangzihengya/LinuxSourceCode_v5.0_study (github.com) 1. 引言 伙伴系统以页面为单位来管…

网站开发的设计思路微信公众平台小程序是什么

简介:应用性能稳定是良好用户体验中非常关键的一环,为了更好保障应用性能稳定,异常捕获在保证线上产品稳定中扮演着至关重要的角色。我们团队在推出了U-APM移动应用性能监控的产品后,帮助开发者定位并解决掉很多线上的疑难杂症。随…

便宜的seo网站优化排名莆田网站建设培训

21 | 中间件:掌控请求处理过程的关键如果在 Map 的时候逻辑复杂一点,不仅仅判断它的 URL 地址,而且要做特殊的判断的话,可以这么做把判断逻辑变成一个委托我们要判断当我们的请求地址包含 abc 的时候,输出 new abcapp.…

商会网站的建设周浦网络网站建设公司

为什么需要代理模式 比如现在项目经理有一个需求:在项目现有所有类的方法前后打印日志。如何实现? 静态代理 interface SmsService {void send(String message); }class SmsServiceImpl implements SmsService {public void send(String message) {Sys…

广东金东建设工程公司网站asp网站开发pdf

简单手写SpringIOC框架 环境搭建基于XML方式项目结构项目代码运行结果 基于注解方式项目结构项目代码运行结果 简单手写SpringIOC框架核心原理基于XML方式原理项目结构项目代码运行结果 基于注解方式原理项目结构项目代码运行结果 环境搭建 基于XML方式 项目结构 项目代码 p…

陕西建设厅网站人才库外包人力资源公司

一、GAN原理 出发点:机器学习中生成模型的问题 无监督学习是机器学习和未来人工智能的突破点,生成模型是无监督学习的关键部分 特点: 不需要MCMC或者变分贝叶斯等复杂的手段,只需要在G和D中对应的多层感知机中运行反向传播或者…

郑州网站设计网站宝安做网站的公司

头文件如://#include //包含库函数............//............_nop_(); //引用库函数敬礼。我一直都是借助仿真软件编。一点一点试时间。C语言最大的缺点就是实时性差,我在网上到看了一些关于延时的讨论,其中有篇文章51单片机 Keil C 延时程序的简单研究,…

ps制作博客网站界面网上做问卷报酬不错的网站是

ZAB协议 ZAB协议是如何实现操作地顺序性的? 如果用一句话解释ZAB协议到底是什么,我觉得它是能保证操作顺序性的、基于主备模式的原子广播协议。 接下来,还是以指令X、Y为例具体演示一下,帮助你更好地理解为什么ZAB协议能实现操作…

测试测试测试测试测试

欢迎使用 OpenWrite 开始写作您的文章... 这是一个二级标题 您可以使用 Markdown 语法:粗体文字 斜体文字 行内代码// 代码块示例 console.log(Hello OpenWrite!);这是一个引用块链接示例

Day008 循环结构与breakcontinue - Java流程控制

Day008 循环结构与break&continue - Java流程控制$(".postTitle2").removeClass("postTitle2").addClass("singleposttitle");Java流程控制 循环结构 (1)while循环while是最基本的…

com域名和网站wordpress顶部提示

FOTA模块中OTA的知识点:1.测试过程中发现哪几类问题? 可能就是一个单键的ecu,比如升了一个门的ecu,他的升了之后就关不上,还有就是升级组合ecu的时候,c屏上不显示进度条。 2.在做ota测试的过程中&#xff…

模板网站的好处网络营销方案策划论文

中霖教育怎么样?中霖教育好吗? 中霖教育包括师资力量、课程设置、教学方法等都是经过不断完善来制定的,我们拥有专业且经验丰富的师资队伍,在教学过程中更注重个性化教学方式,针对每个学员的需求和学习情况制定专属的学习计划。 无论是在…

广西区建设厅网站小制作的制作过程

Posix在线文档: The Single UNIX Specification, Version 2 (opengroup.org) Linux系统中提供了两种不同接口的消息队列: POSIX消息队列。POSIX为可移植的操作系统接口。System V消息队列。System V 是 AT&T 的第一个商业UNIX版本(UNIX System III)的…

呼和浩特 的网站建设上海专业网站建设网

这是记录前端面试的话术集锦第十五篇博文——高频考点(React常考进阶知识点),我会不断更新该博文。❗❗❗ 1. HOC 是什么?相比 mixins 有什么优点? 很多人看到高阶组件(HOC)这个概念就被吓到了,认为这东西很难,其实这东西概念真的很简单,我们先来看一个例子: func…

如何做一名合格的网站人静态网页设计与制作

🌈个人主页:SKY-30 ⛅个人推荐:基于java提供的ArrayList实现的扑克牌游戏 |C贪吃蛇详解 ⚡学好数据结构,刷题刻不容缓:点击一起刷题 🌙心灵鸡汤:总有人要赢,为什么不能是我呢 &…

建立网站大概需要多长时间丹阳火车站片区规划

非类型模板参数 模板参数分为类型形参与非类型形参 。 类型形参即:出现在模板参数列表中,跟在 class 或者 typename 之类的参数类型名称 。 非类型形参,就是用一个常量作为类 ( 函数 ) 模板的一个参数,在类 ( 函数 ) 模板中可将…

网站专题怎么做呢广州页面制作公司

从 NS-10M 监听音箱到 MSP 系列和 HS 系列,雅马哈始终秉持忠实的设计理念,聚焦声学精度,为音频专家提供出色的平台,构建并成就他们专属的专业之声。MT7录音室监听耳机承袭了这一基本研发理念,重现最为精细的声音,力求满…

capacitor的android项目接入穿山甲遇到的坑

Caused by: java.lang.ClassNotFoundException: Didnt find class "com.bytedance.sdk.openadsdk.TTFileProvider" on path: DexPathList[[zip file "/data/app/~~Ol1vZKiGBPJT4eFuTS5Zyw==/org.capaci…