摘要:题目描述定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的函数。
题目描述
定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。
分析该题目要求实现一个带有返回当前栈中最小元素功能的数据结构,首先会想到使用一个变量保存当前最小元素的下标,但是仔细一想,如果当前最小元素刚好在栈顶,此时执行pop操作,那么最小元素会被弹出,新的最小元素又上哪儿找呢?比较暴力的方法是出现这种情况时,再遍历一遍栈就能重新得到最小元素的下标,但是这么暴力操作就没意思了而且时间复杂度很好。
可以使用双栈来实现min功能,栈1常规保存元素,栈2保存此时此刻的栈中最小 元素,比如说有元素进栈1,如果该元素小于栈2的栈顶元素,说明新的最小元素就是该进栈元素,否则,最小元素还是栈2的栈顶元素。
var stack1 = []; var stack2 = []; function push(node) { if(stack2.length === 0 && stack1.length === 0){ stack1.push(node); stack2.push(node); } else{ stack1.push(node); var stack2Top = stack2[stack2.length-1]; if(node < stack2Top) stack2.push(node) else stack2.push(stack2Top); } } function pop() { stack2.pop(); return stack1.pop(); } function top() { return stack1[stack1.length-1]; } function min() { return stack2[stack2.length-1]; }
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/95770.html
摘要:题目定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的函数时间复杂度应为。这样最小值栈的栈顶永远是当前栈的最小值。 题目 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。 思路 1.定义两个栈,一个栈用于存储数据,另一个栈用于存储每次数据进栈时栈的最小值. 2.每次数据进栈时,将此数据和最小值栈的栈顶元素比较,将二者比...
摘要:题目描述设计一个支持,,操作,并能在常数时间内检索到最小元素的栈。删除栈顶的元素。检索栈中的最小元素。示例返回返回返回代码实现 题目描述 设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。 push(x) -- 将元素 x 推入栈中。 pop() -- 删除栈顶的元素。 top() -- 获取栈顶元素。 getMin() -- 检索栈中的最小元素。 示例...
文章目录 一、题目1、题目描述2、基础框架3、原题链接 二、解题报告1、思路分析2、时间复杂度3、代码详解 三、本题小知识四、加群须知 一、题目 1、题目描述 给你一棵二叉搜索树,请按 中序遍历 将其重新排列为一棵递增顺序搜索树,使树中最左边的节点成为树的根节点,并且每个节点没有左子节点,只有一个右子节点。 样例输入: [5,3,6,2,4,null,8,1,null,null,nu...
摘要:有效二叉搜索树定义如下节点的左子树只包含小于当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。而我们二叉搜索树保证了左子树的节点的值均小于根节点的值,根节点的值均小于右子树的值,因此中序遍历以后得到的序列一定是升序序列。 ...
阅读 2738·2021-10-11 10:57
阅读 1569·2021-09-26 09:55
阅读 1310·2021-09-06 15:11
阅读 3447·2021-08-26 14:16
阅读 662·2019-08-30 15:54
阅读 535·2019-08-30 12:43
阅读 3290·2019-08-29 16:18
阅读 2565·2019-08-23 16:14