Stack
题目 输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。
示例 1: 输入:head = [1,3,2] 输出:[2,3,1] 限制:
0 <= 链表长度 <= 10000
来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/cong-wei-dao-tou-da-yin-lian-biao-lcof 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
JS实现 1、reverse()方法,反转数组
/** * Definition for singly-linked list. * …
题目 定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min、push 及 pop 的时间复杂度都是 O(1)。
示例: MinStack minStack = new MinStack(); minStack.push(-2); minStack.push(0); minStack.push(-3); minStack.min(); --> 返回 -3. minStack.pop(); minStack.top(); --> 返回 0. minStack.min(); --> 返回 -2. 提示: …
题目 用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 )
示例 1: 输入: ["CQueue","appendTail","deleteHead","deleteHead"] [[],[3],[],[]] 输出:[null,null,3,-1] 示例 2: 输入: …
题目 给定一个二叉树,返回它的 后序 遍历。
示例:
输入: [1,null,2,3] 1 \ 2 / 3 输出: [3,2,1] 进阶: 递归算法很简单,你可以通过迭代算法完成吗?
来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/binary-tree-postorder-traversal 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
思路 后序遍历:左 -> 右 -> 根
JS实现 1、递归实现
/** * Definition for a binary tree node. * function …
题目 给你二叉树的根节点 root ,返回它节点值的 前序 遍历。
示例 1: 1 \ 2 / 3 输入:root = [1,null,2,3] 输出:[1,2,3] 示例 2: 输入:root = [] 输出:[] 示例 3: 输入:root = [1] 输出:[1] 示例 4: 1 / 2 输入:root = [1,2] 输出:[1,2] 示例 5: 1 \ 2 输入:root = [1,null,2] 输出:[1,2] 提示:
树中节点数目在范围 [0, 100] 内 -100 <= Node.val <= 100 进阶:递归算法很简单,你可以通过迭代算法完成吗?
来源:力 …
题目 给定一个二叉树的根节点 root ,返回它的 中序 遍历。
示例 1: 1 \ 2 / 3 输入:root = [1,null,2,3] 输出:[1,3,2] 示例 2: 输入:root = [] 输出:[] 示例 3: 输入:root = [1] 输出:[1] 示例 4: 1 / 2 输入:root = [1,2] 输出:[2,1] 示例 5: 1 \ 2 输入:root = [1,null,2] 输出:[1,2] 提示:
树中节点数目在范围 [0, 100] 内 -100 <= Node.val <= 100 进阶:
递归算法很简单,你可以通过迭代算法完成吗? 来源:力 …
题目 设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。
push(x) —— 将元素 x 推入栈中。 pop() —— 删除栈顶的元素。 top() —— 获取栈顶元素。 getMin() —— 检索栈中的最小元素。 示例:
输入: ["MinStack","push","push","push","getMin","pop","top","getMin"] [[],[-2],[0],[-3],[],[],[],[]] 输出: …
题目 给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 示例 1: 输入:s = "()" 输出:true 示例 2: 输入:s = "()[]{}" 输出:true 示例 3: 输入:s = "(]" 输出:false 示例 4: 输入:s = …
题目 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
详解 队列的特性是:“先进先出”,栈的特性是:“先进后出”。
当我们向模拟的队列插入数 a,b,c 时,假设插入的是 stack1,此时的栈情况为: 栈 stack1:{a,b,c} 栈 stack2:{} 当需要弹出一个数,根据队列的"先进先出"原则,a 先进入,则 a 应该先弹出。但是此时 a 在 stack1 的最下面,将 stack1 中全部元素逐个弹出压入 stack2,现在可以正确的从 stack2 中弹出 a,此时的栈情况为: 栈 stack1:{} …
题目 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。
注意:保证测试中不会当栈为空的时候,对栈调用pop()或者min()或者top()方法。
详解 利用一个辅助栈来存放最小值;
每入栈一次,就与辅助栈顶比较大小,如果小就入栈,如果大就入栈当前的辅助栈顶;
当出栈时,辅助栈也要出栈;
JS实现 var stack1 = []; var stack2 = []; // 辅助栈,存最小值 function push(node) { // write code here stack1.push(node); if (stack2.length …
1/2
Next