建站工具 ip,商场设计图,黄页网站建设黄页网站建设,php跳转网站文章目录 剑指offerWeek3周六#xff1a;栈的压入、弹出序列AC代码思路#xff1a; 周六#xff1a;不分行从上往下打印二叉树AC代码思路#xff1a; 剑指offerWeek3
周六#xff1a;栈的压入、弹出序列
题目链接#xff1a;栈的压入、弹出序列
输入两个整数序列栈的压入、弹出序列AC代码思路 周六不分行从上往下打印二叉树AC代码思路 剑指offerWeek3
周六栈的压入、弹出序列
题目链接栈的压入、弹出序列
输入两个整数序列第一个序列表示栈的压入顺序请判断第二个序列是否可能为该栈的弹出顺序。
假设压入栈的所有数字均不相等。例如序列 1,2,3,4,5是某栈的压入顺序序列 4,5,3,2,1是该压栈序列对应的一个弹出序列但 4,3,5,1,2就不可能是该压栈序列的弹出序列。注意若两个序列长度不等则视为并不是一个栈的压入、弹出序列。若两个序列都为空则视为是一个栈的压入、弹出序列。数据范围
序列长度 [0,1000]样例
输入[1,2,3,4,5][4,5,3,2,1]输出trueAC代码
class Solution {
public:bool isPopOrder(vectorint pushV,vectorint popV) {if (pushV.size() ! popV.size()) return false;int idx 0;stackint stk;for (auto x : pushV){stk.push(x);while (stk.size() stk.top() popV[idx]){idx ;stk.pop();}}if (!stk.empty()) return false;return true;}
};思路
整体思路
模拟题模拟的模板思路当前可走的路径
- 路径1
- 路径2
...
- 路径n可走路径的条件
- 条件1
- 条件2
...
- 条件n对应本题
当前可执行的操作(路径)
- 压栈
- 弹栈压栈的条件
- 栈为空的时候肯定可压
- 其他条件比较难想先放着弹栈的条件
- 当栈不空- 只要栈顶元素和输出顺序的数值相同时即弹因此
每次都压栈一次然后只要栈不空且栈顶元素和输出顺序的数值相同时就弹栈周六不分行从上往下打印二叉树
题目链接不分行从上往下打印二叉树
从上往下打印出二叉树的每个结点同一层的结点按照从左到右的顺序打印。数据范围
树中节点的数量 [0,1000]
。样例
输入如下图所示二叉树[8, 12, 2, null, null, 6, null, 4, null, null, null]8/ \12 2/6/4输出[8, 12, 2, 6, 4]AC代码
/*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode(int x) : val(x), left(NULL), right(NULL) {}* };*/
class Solution {
public:vectorint printFromTopToBottom(TreeNode* root) {vectorint res;if (!root) return res;queueTreeNode* q;q.push(root);while (q.size()){auto t q.front();q.pop();res.push_back(t-val);if (t-left) q.push(t-left);if (t-right) q.push(t-right);}return res;}
};思路
整体思路
宽搜模板题模板
- 起点入队
- while (q.size())
{- 队首出队- 判断队首可达点- 可达点入队
}