一、题目描述
给你二叉树的根节点root
,返回其节点值自底向上的层序遍历。(即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)
示例 1
输入: root = [3, 9, 20, null, null, 15, 7]
输出: [[15, 7], [9, 20], [3]]
示例 2
输入: root = [1]
输出: [[1]]
示例 3
输入: root = []
输出: []
给你二叉树的根节点root
,返回其节点值自底向上的层序遍历。(即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)
示例 1
输入: root = [3, 9, 20, null, null, 15, 7]
输出: [[15, 7], [9, 20], [3]]
示例 2
输入: root = [1]
输出: [[1]]
示例 3
输入: root = []
输出: []
给你二叉树的根节点root
,返回其节点值的层序遍历。(即逐层地,从左到右访问所有节点)。
示例 1
输入: root = [3, 9, 20, null, null, 15, 7]
输出: [[3], [9, 20], [15, 7]]
示例 2
输入: root = [1]
输出: [[1]]
示例 3
输入: root = []
输出: []
给你一个整数数组nums
,有一个大小为k
的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的k
个数字。滑动窗口每次只向右移动一位。
返回滑动窗口中的最大值。
示例 1
输入: nums = [1, 3, -1, -3, 5, 3, 6, 7], k = 3
输出: [3, 3, 5, 5, 6, 7]
解释:
滑动窗口的位置 最大值
-----------------------------------
[1 3 -1] -3 5 3 6 7 3
1 [3 -1 -3] 5 3 6 7 3
1 3 [-1 -3 5] 3 6 7 5
1 3 -1 [-3 5 3] 6 7 5
1 3 -1 -3 [5 3 6] 7 6
1 3 -1 -3 5 [3 6 7] 7
请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(push
、top
、pop
和empty
)。
实现MyStack
类:
void push(int x)
将元素x
压入栈顶。int pop()
移除并返回栈顶元素。int top()
返回栈顶元素。boolean empty()
如果栈是空的,返回true
;否则,返回false
。请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push
、pop
、peek
、empty
)。
实现MyQueue
类:
void push(int x)
将元素x
推到队列的末尾int pop()
从队列的开头移除并返回元素int peek()
返回队列开头的元素boolean empty()
如果队列为空,返回true
;否则,返回false
栈
是计算机科学中的一种抽象数据类型,只允许在有序的线性数据集合的一端(称为栈顶,top)进行加入数据(push)和移除数据(pop)。因而按照后进先出(LIFO, Last In First Out)的原理运作,栈常用一维数组或链表来实现。常与另一种有序的线性数据集合队列相提并论。
栈使用两种基本操作: