当前位置: 首页 > news >正文

石家庄专业网站设计电话廊坊自动seo

石家庄专业网站设计电话,廊坊自动seo,旅游网站建设规划,正规的私活接单平台作者推荐 map|动态规划|单调栈|LeetCode975:奇偶跳 通过枚举最小(最大)值不重复、不遗漏枚举所有子数组 C算法:美丽塔O(n)解法单调栈左右寻找第一个小于maxHeight[i]的left,right,[left,right]直接的高度都是maxHeight[i] 可以…

作者推荐

map|动态规划|单调栈|LeetCode975:奇偶跳

通过枚举最小(最大)值不重复、不遗漏枚举所有子数组

C++算法:美丽塔O(n)解法单调栈左右寻找第一个小于maxHeight[i]的left,right,[left,right]直接的高度都是maxHeight[i] 可以用封装的类,可以理解为枚举山顶这个子数组
【单调栈]LeetCode84: 柱状图中最大的矩形
【单调栈】【区间合并】LeetCode85:最大矩形
【单调栈】LeetCode2334:元素值大于变化阈值的子数组
【单调栈】LeetCode:2818操作使得分最大
【前缀和】【单调栈】LeetCode2281:巫师的总力量和
map 动态规划 单调栈 LeetCode975:奇偶跳

封装类

class CRangIndex
{
public:template<class _Pr>CRangIndex(int iVectorSize, _Pr CurIndexCmpStackTopIndex){m_c = iVectorSize;m_vLeft.assign(m_c, -1);m_vRight.assign(m_c, m_c);stack<int> sta;for (int i = 0; i < m_c; i++){while (sta.size() && (CurIndexCmpStackTopIndex(i, sta.top()))){m_vRight[sta.top()] = i;sta.pop();}if (sta.size()){m_vLeft[i] = sta.top();}sta.emplace(i);}}template<class _Pr>CRangIndex(const vector<int>& nums, _Pr CurValueCmpStackTopValue){m_c = nums.size();m_vLeft.assign(m_c, -1);m_vRight.assign(m_c, m_c);stack<int> sta;for (int i = 0; i < m_c; i++){while (sta.size() && (CurValueCmpStackTopValue(nums[i], nums[sta.top()]))){m_vRight[sta.top()] = i;sta.pop();}if (sta.size()){m_vLeft[i] = sta.top();}sta.emplace(i);}}int m_c;vector<int> m_vLeft, m_vRight;//vLeft[i] 从右向左第一个小于nums[i] ;vRight[i] 是第一个小于等于nums[i]。
};

测试用例

大于

CRangIndex ri(nums, std::greater<>()); 结果:右边界从左向右第一个大于当前值,左边界从右向左第一个大于等于当前值

原数组左边界右边界
1 2 3 3 4-1 -1 -1 2 -11 2 4 4 5
8 7 3 4-1 0 1 14 4 3 4

大于等于

CRangIndex ri(nums, std::greater_equal<>());
结果:右边界从左向右第一个大于等于当前值,左边界从右向左第一个大于当前值
.|原数组 | 左边界 | 右边界|
|–|–|–|
1 2 3 3 4|-1 -1 -1 -1 -1|1 2 3 4 5
8 7 3 4| -1 0 1 1|4 4 3 4

小于

CRangIndex ri(nums, std::less<>());
结果:右边界从左向右第一个小于当前值,左边界从右向左第一个小于等于当前值
.|原数组 | 左边界 | 右边界|
|–|–|–|
1 2 3 3 4|-1 0 1 2 3|5 5 5 5 5
8 7 3 4 |-1 -1 -1 2|1 2 4 4

小于等于

CRangIndex ri(nums, std::less_equal<>());
结果:右边界从左向右第一个小于等于当前值,左边界从右向左第一个小于当前值
.|原数组 | 左边界 | 右边界|
1 2 3 3 4|-1 0 1 1 3|5 5 3 5 5
8 7 3 4| -1 -1 -1 2|1 2 4 4

int main()
{vector<int> nums;{nums = { 1,2,3,3,4 };CRangIndex ri(nums, std::less_equal<>());std::cout << "数组值:";CConsole::Out(nums);std::cout << "左边界:";CConsole::Out(ri.m_vLeft);std::cout << "左边界:";CConsole::Out(ri.m_vRight);}{nums = { 8,7,3,4 };CRangIndex ri(nums, std::less_equal<>());std::cout << "数组值:";CConsole::Out(nums);std::cout << "左边界:";CConsole::Out(ri.m_vLeft);std::cout << "左边界:";CConsole::Out(ri.m_vRight);}
}

二分查找的进一步优化

子状态都单调递增或单调递减
一,插入也是有序,直接栈顶插入。二,淘汰无效状态后,直接栈顶插入。
二,要查询的值是被淘汰的元素。二,要查询的值是栈顶元素。

【单调栈】LeetCode1776:车队
【单调栈】LeetCode:1944队列中可以看到的人数

最小(最大)字典序

【单调栈 】LeetCode321:拼接最大数
【单调栈】LeetCode2030:含特定字母的最小子序列

其它

【单调栈】【二分查找】LeetCode: 2454.下一个更大元素 IV
【map】【单调栈 】LeetCode768: 最多能完成排序的块 II

扩展阅读

视频课程

有效学习:明确的目标 及时的反馈 拉伸区(难度合适),可以先学简单的课程,请移步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 C++17
或者 操作系统:win10 开发环境: VS2022 C++17
如无特殊说明,本算法C++ 实现。

http://www.mmbaike.com/news/82558.html

相关文章:

  • 关于政府网站建设的情况说明凡科建站
  • 萧山住房和城乡建设委员会网站网站推广的案例
  • 网站建设牜金手指花总十四百度账号登录入口
  • 汕头市网站建设公司百度云搜索引擎入口官网
  • 网站评论回复如何做郑州百度网站快速优化
  • 东莞企业网站设计seo概念
  • 沧州网站排名优化企业培训课程种类
  • 政府网站建设项目背景黄石seo
  • 提供秦皇岛网站建设哪里有seo资讯
  • vshtml5网站开发百度问答库
  • wordpress死链提交广州seo效果
  • 太原网站建设司免费域名邮箱
  • 成都专业网站建设价格关键词优化报价怎么样
  • 网站开发 待遇怎么样微信推广软件哪个好
  • 视频拍摄剪辑岗位职责及要求开鲁网站seo
  • 出名的建站网站360摄像头海澳門地区限制解除
  • 企业工商信息查询app衡水seo培训
  • 淘客联盟如何做网站推广网页设计一般用什么软件
  • 如何免费注册自己的网站保定网站seo
  • 大同哪有做网站的企业网站排名优化方案
  • 做招聘网站的要求上海seo关键词优化
  • 门户网站有哪些局限性搜索引擎优化服务
  • 中国电信网站备案 密码重置互联网营销的五个手段
  • 上海松江做网站公司关键词排名怎么查
  • 做网站模板赚钱吗抖音搜索引擎推广
  • 怎么给企业制作网站中文域名查询官网
  • 域名备案未做网站新冠咳嗽怎么办
  • jsp网站开发详解pdf上百度推广的网站要多少钱
  • 湖南畅想网站建设百度推广的五大优势
  • 电脑配件经营网站的建设优化seo公司哪家好