力扣-栈
神山极客
C++入门
展开
-
笨阶乘
力扣地址 栈: 按照题目要求,乘除加减依次进行,那么我们只需要按照执行次序,定义一个index变量记录执行次序,依次进行以上操作,并且入栈,最后将所有结果全部相加返回即可 class Solution { public: int clumsy(int N) { vector<int> s; s.push_back(N); --N; int index = 0; while (N) {原创 2021-04-01 23:00:36 · 109 阅读 · 0 评论 -
有效的括号
力扣地址 栈: 相同方向直接入栈,不同方向,只需匹配是否和当前栈顶字符匹配,不匹配直接返回 false class Solution { public: bool isValid(string s) { vector<char> st; for (auto c : s) { if (st.size()) { if ('(' == c || '[' == c || '{' == c) st.原创 2021-03-31 23:17:28 · 105 阅读 · 0 评论 -
柱状图中最大的矩形
力扣地址 单调栈: 按题目要求,需要知道每个位置的矩形可以扩展到的最远距离,由于比当前位置的值小的矩形是不可能与当前位置共同组成矩形的, 所以题目可以理解为,寻找当前位置的左右两边第一个比自己小的值,用这两个位置的 index 相减得到宽度,再乘以当前位置的长度, 如此得到当前位置的最大矩形面积,对每个位置都如此,寻找最大的矩形面积。 如此,我们只需要对数组左右个遍历一次,就可以知道每个位置的左右第一个比自己小的值的位置。 class Solution { public: int la原创 2021-03-30 22:18:08 · 116 阅读 · 0 评论