LCR 150. 彩灯装饰记录 II
一棵圣诞树记作根节点为 root 的二叉树,节点值为该位置装饰彩灯的颜色编号。请按照从左到右的顺序返回每一层彩灯编号,每一层的结果记录于一行。
示例 1:
**输入:**root = [8,17,21,18,null,null,6]
输出:[[8],[17,21],[18,6]]
提示:
节点总数 <= 1000
层序遍历时,一次输出一层
只需要在每次出队时把队列清空,然后再放入下一层,
因为每次出队时可以确定出队多少元素,所以可以同时出队入队
12345678910111213141516171819202122class Solution {public: vector<vector<int>> decorateRecord(TreeNode *root) { vector<vector<int>> ans; queue<TreeNode *> mid; if (root != nullptr) mid.push(root); ...
LCR 149. 彩灯装饰记录 I
一棵圣诞树记作根节点为 root 的二叉树,节点值为该位置装饰彩灯的颜色编号。请按照从 左 到 右 的顺序返回每一层彩灯编号。
示例 1:
**输入:**root = [8,17,21,18,null,null,6]
输出:[8,17,21,18,6]
提示:
节点总数 <= 1000
层序遍历二叉树
借助队列的先入先出
12345678910111213141516171819class Solution {public: vector<int> decorateRecord(TreeNode *root) { queue<TreeNode *> mid; vector<int> ans; if (root != nullptr) mid.push(root); while (!mid.empty()) { TreeNode *cur = mid.front(); mid.pop(); ...
LCR 148. 验证图书取出顺序
现在图书馆有一堆图书需要放入书架,并且图书馆的书架是一种特殊的数据结构,只能按照 一定 的顺序 放入 和 拿取 书籍。
给定一个表示图书放入顺序的整数序列 putIn,请判断序列 takeOut 是否为按照正确的顺序拿取书籍的操作序列。你可以假设放入书架的所有书籍编号都不相同。
示例 1:
**输入:**putIn = [6,7,8,9,10,11], takeOut = [9,11,10,8,7,6]
**输出:**true
**解释:**我们可以按以下操作放入并拿取书籍:
push(6), push(7), push(8), push(9), pop() -> 9,
push(10), push(11),pop() -> 11,pop() -> 10, pop() -> 8, pop() -> 7, pop() -> 6
示例 2:
**输入:**putIn = [6,7,8,9,10,11], takeOut = [11,9,8,10,6,7]
**输出:**false
**解释:**6 不能在 7 之前取出。
提示:
0 <= putI ...
LCR 147. 最小栈
请你设计一个 最小栈 。它提供 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。
实现 MinStack 类:
MinStack() 初始化堆栈对象。
void push(int val) 将元素val推入堆栈。
void pop() 删除堆栈顶部的元素。
int top() 获取堆栈顶部的元素。
int getMin() 获取堆栈中的最小元素。
示例 1:
输入:
[“MinStack”,“push”,“push”,“push”,“getMin”,“pop”,“top”,“getMin”]
[[],[-2],[0],[-3],[],[],[],[]]
输出:
[null,null,null,null,-3,null,0,-2]
解释:
MinStack minStack = new MinStack();
minStack.push(-2);
minStack.push(0);
minStack.push(-3);
minStack.getMin(); --> 返回 -3.
minStack.pop();
minStack.top(); --> ...
LCR 146. 螺旋遍历二维数组
给定一个二维数组 array,请返回「螺旋遍历」该数组的结果。
螺旋遍历:从左上角开始,按照 向右、向下、向左、向上 的顺序 依次 提取元素,然后再进入内部一层重复相同的步骤,直到提取完所有元素。
示例 1:
**输入:**array = [[1,2,3],[8,9,4],[7,6,5]]
输出:[1,2,3,4,5,6,7,8,9]
示例 2:
**输入:**array = [[1,2,3,4],[12,13,14,5],[11,16,15,6],[10,9,8,7]]
输出:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]
限制:
0 <= array.length <= 100
0 <= array[i].length <= 100
模拟螺旋遍历
四个变量来控制边界
根据当前遍历方向,和是否到达此方向上的终点来更新边界和方向
1234567891011121314151617181920212223242526272829303132333435class Solution {public: vector&l ...
LCR 145. 判断对称二叉树
请设计一个函数判断一棵二叉树是否 轴对称 。
示例 1:
**输入:**root = [6,7,7,8,9,9,8]
**输出:**true
**解释:**从图中可看出树是轴对称的。
示例 2:
**输入:**root = [1,2,2,null,3,null,3]
**输出:**false
**解释:**从图中可看出最后一层的节点不对称。
提示:
0 <= 节点个数 <= 1000
空树返回true
从根节点依次开始比较即可
123456789101112131415161718class Solution {public: bool checkSymmetricTree(TreeNode *root) { if (root == nullptr) return true; return check(root->left, root->right); } bool check(TreeNode *left, TreeNode *right) { ...







