![](https://img-blog.csdnimg.cn/2021091714084218.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
算法笔记
文章平均质量分 78
思考然后输出~我的算法学习笔记
Mancuoj
彻底失败
展开
-
84. 柱状图中最大的矩形
DescriptionSimulation思路分析:大眼一瞧,柱状图高高低低,计算面积,这不是接雨水吗?单调栈确认!判断单调性?可以看到图中都是遇到小值需要出栈的时候才计算面积,可以确认是递增的栈,也就是栈顶元素最大。单调性确定!直接三板斧给出:单调栈存入下标计算宽度,根据出栈的最小值计算高度(具体思路上篇文章已经详细给出,在此不赘述)删改后可得:for (int i = 0; i < h.size(); i++) { while (!stk.empt原创 2021-09-26 10:26:37 · 80 阅读 · 0 评论 -
42. 接雨水
DescriptionSimulation思路:看图分析,只有下一个大于等于自己的元素插入才会形成凹槽接到雨水。所以显而易见,我们应该使用单调栈。单调性怎么判断?很明显,比自己小的可以直接插入,大的插入要让前面的小元素出栈,因此我们需要一个递减的栈(栈顶元素最小)。面积怎么计算?底 ✖ 高大伙都知道,然后按行计算,下面是分析:首先明确一下单调栈里到底要存什么内容,每个柱的高度?不不不!我们需要下标来计算宽度,而下标又可以直接get到对应的高度,所以只需一个单调栈来存储下标就可以了。画了原创 2021-09-26 10:26:18 · 75 阅读 · 0 评论 -
739. 每日温度
DescriptionSimulation思路:我们先列一个表格分析一下示例数据是怎么来的第1天第2天第3天第4天第5天第6天第7天第8天温度7374757169727673下一个更高的温度第2天第3天第7天第6天第6天第7天无无天数差11421100首先想到的当然是暴力解法,两层 for 循环挨个遍历一遍,计算天数差即可,时间复杂度O(n^2)。get到暴力解法也很重要,毕竟不是什么时候都能想到原创 2021-09-26 10:25:56 · 67 阅读 · 0 评论 -
一道Medium,两道Hard带你刷爆力扣单调栈(模板解题)
一道Medium,两道Hard带你刷爆力扣单调栈(学不会来捶我)!一道Medium,两道Hard带你刷爆力扣单调栈(学不会来捶我)!一道Medium,两道Hard带你刷爆力扣单调栈(学不会来捶我)!原创 2021-08-31 11:03:55 · 719 阅读 · 74 评论 -
【面试高频】详解单调栈(模板解题)
所谓单调栈其实就是栈内元素具有单调性。我们都知道:如果一个二元一次方程具有单调性,图像上表现就是递增或递减的直线,而栈同样可以具有递增或递减的单调性。原创 2021-08-31 10:54:16 · 328 阅读 · 4 评论 -
用数组模拟栈和队列
继上篇用数组模拟链表,本篇讲一讲如何用数组模拟栈和队列。原因其实也类似,实现方便,可以避免内存泄漏而且方便调试。最重要的效率原因,如果用 new 很容易超时原创 2021-08-29 22:48:29 · 382 阅读 · 4 评论 -
用数组模拟链表
用数组来模拟链表可以避免内存泄漏而且方便调试。最重要的是效率原因,算法题中的数据大多十万到百万级别,如果用 new的方法很容易超时原创 2021-08-25 11:05:39 · 767 阅读 · 5 评论