如何建设简单网站,免费logo设计在线设计,培训心得体会范文,wordpress 播放大视频文章目录 stack最小栈题目解析代码 栈的压入弹出序列题目解析代码 queue二叉树的层序遍历题目解析代码 stack stack和queue都是空间适配器 最小栈 最小栈的题目链接 题目解析
minst是空就进栈#xff0c;或者是val minst.top()就进栈
代码
class MinStack {
public:M… 文章目录 stack最小栈题目解析代码 栈的压入弹出序列题目解析代码 queue二叉树的层序遍历题目解析代码 stack stack和queue都是空间适配器 最小栈 最小栈的题目链接 题目解析
minst是空就进栈或者是val minst.top()就进栈
代码
class MinStack {
public:MinStack() {}void push(int val) {st.push(val);if(minst.empty() || val minst.top()){minst.push(val);}}void pop() {if(st.top() minst.top()){minst.pop();} st.pop();}int top() {return st.top(); }int getMin() {return minst.top(); }
private:stackint st;stackint minst;
};栈的压入弹出序列 栈的压入弹出序列 题目解析 1.入栈序列入栈一个值一个一个地入栈 2.栈顶元素跟出栈序列是否匹配持续出 3.不匹配看入栈是否已经入完了没有入完继续入入完了就结束了 代码
class Solution
{
public:bool IsPopOrder(vectorint pushV, vectorint popV) {size_t popi 0;stackint st;for(auto ch : pushV){// 入栈st.push(ch);// 入栈和出栈元素匹配// 栈不为空取栈顶元素一种特殊情况// 1,2,3,4,5 4,3,2,1,5// 栈会为空不加!st.empty(),会崩溃// 持续出栈while(!st.empty() st.top() popV[popi]){st.pop();popi;}}// 如果栈为空就返回true,都出完了// 如果栈为假就返回false,popV出不了了就不匹配return st.empty();}
};queue 二叉树的层序遍历 二叉树的层序遍历 题目解析 根节点出队列把根节点的孩子入队列 1.设置一个变量记录当前层的节点个数 2.一层一层出队列的size就是当前层的size 因为出一个节点就把它的孩子带入只有它的孩子在队列中所以队列的size就是当前层的levelSize 代码
class Solution
{
public:vectorvectorint levelOrder(TreeNode* root) {vectorvectorint vv;queueTreeNode* q;size_t levelSize 0;if(root){q.push(root);levelSize 1;}while(!q.empty()){vectorint v;while(levelSize--){TreeNode* front q.front();v.push_back(front-val);q.pop();if(front-left)q.push(front-left);if(front-right)q.push(front-right);} vv.push_back(v);levelSize q.size();}return vv;}
};